正则表达式1

正则表达式

1.一般符号

符号 意思
. 匹配除换行符以外的任意字符
\w 匹配字母或数字或下划线或汉字 等价于 ‘[^A-Za-z0-9_]’
\s 匹配空格
\d 匹配数字
\b 匹配单词边界,比如要匹配I am lily中的am,可以使用\bam\b
\A 匹配字符串的开始
\Z 匹配字符串的结束
^ 匹配字符串的开始,多行时匹配每一行的开头
$ 匹配字符串的结束,多行时匹配每一行的结束
[] 匹配括号内的包含的字符,比如[a-z]
| 匹配左右两边的表达式,优先匹配左边的,如果|不在括号中,作用域就是整个正则表达式。

2.反义

符号 意思
\W 匹配任意不是字母,数字,下划线 的字符
\S 匹配任意不是空白符的字符
\D 匹配任意非数字的字符
\B 匹配不是单词开头或结束的位置
[^abc] 匹配除了abc以外的任意字符

3.数量相关

符号 意思
* 匹配前面的子表达式零次或多次。例如,zo 能匹配 “z” 以及 “zoo"。 等价于{0,}。
+ 匹配前面的子表达式一次或多次。例如,'zo+‘ 能匹配 “zo” 以及 “zoo",但不能匹配 "z"。+ 等价于 {1,}。
? 匹配前面的子表达式零次或一次。例如,"do(es)?“ 可以匹配 "do” 或 “does” 中的"do" 。? 等价于 {0,1}。
{n} n 是一个非负整数。匹配确定的 n 次。例如,'o{2}‘ 不能匹配 “Bob” 中的 'o',但是能匹配 “food” 中的两个 o。
{n,} n 是一个非负整数。至少匹配n 次。例如,'o{2,}‘ 不能匹配 “Bob” 中的 'o',但能匹配 “foooood” 中的所有 o。'o{1,}’ 等价于 ‘o+'。'o{0,}’ 则等价于 ‘o*'。
{n,m} m 和 n 均为非负整数,其中n <= m。最少匹配 n 次且最多匹配 m 次。例如,"o{1,3}“ 将匹配 "fooooood” 中的前三个 o。'o{0,1}‘ 等价于 'o?'。请注意在逗号和两个数之间不能有空格。
*? 匹配任意次,但尽可能少重复
+? 重复1次或更多次,但尽可能少重复
?? 重复0次或1次,但尽可能少重复
{n,m}? 重复n到m次,但尽可能少重复
{n,}? 重复n次以上,但尽可能少重复

4. ()作为分组

符号 意思
() 表示一个分组,每个分组都有一个编号,从1开始递增,分组的后面可以接表示数量的符号。
(?P 表示为这个分组增加一个别名
\数字 “\”后面接一个数字,该数字就是分组的编号,用来引用一个前面的分组
(?P=name) name指的是分组的别名,用来用来引用一个前面的分组

5. ()作为分组不作为分组

符号 意思
(?:) 不分组,不分配分组编号
(?=) 匹配前面的字符的后面必须跟这该括号内的表达式。比如a(?=\d)则匹配后面接着数字的a。
(?!) 匹配前面的字符的后面不是跟这该括号内的表达式。比如a(?!\d)则匹配后面不是接着数字的a。
(?<=) 比如a(?<=\d)则匹配前面接着数字的a。
(?<!) 比如a(?<!\d)则匹配前面不是接着数字的a。
(?#) #号后面的内容是注释
(?(id/name)par1|par2) 就是如果该编号或者名字的分组匹配到了,那么久匹配par1,如果没有就匹配par2。

实例:

1
2
var str = "https://www.runoob.com:80/html/html-tutorial.html";
var patt1 = /(\w+):\/\/([^/:]+)(:\d*)?([^# ]*)/;