正则表达式学习记录
1.字符类型
\d数字0-9,\D非数字0-9,\s空白符,\S非空白符,.非换行符之外的所有符号,\w数字字母下划线,\W非数字字母下划线,等,
2.字符数量(量词)
基本表示({}):
{1}匹配1个,{1,3}匹配一个到3个,{1,}匹配一个以上,
简写表示:
? 匹配0个到1个,等效{0,1} ;* 匹配0个到多个,等效{0,};+ 匹配1个到多个,等效{1,}
3.位置信息
^ :开始位置,$结束位置,\b整个单词的边缘位置,(?=p)紧贴p前面的位置(p代表模式),(?!p)紧贴p前面位置以外的位置,(?<=p)紧贴p后面的位置,(?<!)紧贴p后面的位置以外的位置
4.匹配模式
关于() [] | 等符号的应用
| 表示分支或,如 tony is a good boy中匹配good和boy可以用/good|boy/
() 表示分组 如ababcd中要匹配abab,可以用/(ab){2}/,同时()可以用反向引用,如:a-b-c a/b/c a:b:c 中匹配所有abc这种,可以用a([-\/:])b\1c,
反向引用以左括号为标准,从左到右依次是\1 \2 \3...,在replace中可用$1,$2,$3...表示如'a-b-c-d'.replace(/(.)-(.)-(.)-(.)/,'$1=$2=$3=$4')结果为a=b=c=d,
(?:) 则表示非捕获分组(即不参与引用)
[] 表示取值范围,[]中始终表示其中之一,如[0-9]表示0到9中的一个,[abc]表示abc中的一个,^在[]中代表取反,[^abc]表示除了abc以外的字符(注意:是全局取反,而不是除了abc以外的字母)
? 默认正则是贪婪模式,在量词后面加?表示非贪婪模式 如abcdefa 匹配[a-z]{3,5}结果是abcde ,匹配到足够多,能匹配到5个绝不按照三个来,这就是贪婪模式,而当用?之后,正则为
[a-z]{3,5}?,匹配结果为 abc def