部分正则:
(?:...) | 表示非捕获型分组,就是不会缓存下来,留着后面再用 |
? | 它表示重复0或1次 |
(...) | 表示一个捕获型分组(capturing group)。一个捕获型分组将复 制它所匹配的文本,并将其放人result数组中。每个捕获型分组都将被指定一个编号。第 一个捕获型分组的编号是1,所以该分组所匹配的文本考贝将出现在result[1]中 |
+ | 表示匹配一次或者多次 |
表示转义 | |
. | 表示会将匹配除行结束符以外的所有字符 |
d | 表示数字 |
[^?#] |
表示以一个^开始,它表示这个类包含除?和#之外的所有字符。*表示这个字符类将被匹配0次或多次。 |
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> </head> <body> <script> var agreement ='http:'; var reg = /^(?:([A-Za-z]+):)?$/; console.log(reg.test(agreement));//true //非捕获型分组 参考https://www.cnblogs.com/yangyang63963/p/5692992.html var tmp1 = "project",tmp2 = "program",tmp3 = "professional" var reg2 = /pro(?:gram|ject)/ console.log(reg2.test(tmp1))//true console.log(reg2.test(tmp2))//true console.log(reg2.test(tmp3))//false var bar = "///"; var reg3 = /(/{0,3})/;//表示/可以重复0到3次 console.log(reg3.test(bar));//true var hostname = "www.b-aidu.com"; var reg4 = /([0-9.-A-Za-z]+)/; console.log(reg4.test(hostname));//true var port ="::80"; var reg5 = /(?::(d+))?/ console.log(reg5.test(port));//true var bar2 = "/#"; var reg6 = /(?:/([^?#]*))?/ //主机名后/后面可以写# console.log(reg6.test(bar2));//true var content = "#afsafsa"; var reg7 = /(?:?([^#]*))?/ console.log(reg7.test(content));//true var content1 = "hufahifiahi4828471$@#$!%^!@%#!!" var reg8 = /(?:#(.*))?/; console.log(reg8.test(content1));//true var url = "https://www.ora.com:80/goodparts?q#fragment"; var urlTest = /^(?:([A-Za-z]+):)?(/{0,3})([0-9.-A-Za-z]+)(?::(d+))?(?:/([^?#]*))?(?:?([^#]*))?(?:#(.*))$/ console.log(urlTest.test(url)) var parse_number = /^-?d+(?:.d*)?(?:e[+-]?d+)?$/i; console.log(parse_number.test('9999.e-1')); </script> </body> </html>