正则表达式是匹配模式,要么匹配字符,要么匹配位置。
1、匹配字符
1.1、字面量
匹配一个具体字符,包括不用转义的和需要转义的。比如/hello/匹配“hello”
1.2、字符组
匹配一个字符,可以是多种可能之一。
\d 就是[0-9]。表示是一位数字。记忆方式:其英文是digit(数字)。
\D 就是[^0-9]。表示除数字外的任意字符。
\w 就是[0-9a-zA-Z_]。表示数字、大小写字母和下划线。记忆方式:w是word的简写,也称单词字符。
\W 就是[^0-9a-zA-Z_]。非单词字符。
\s 就是[ \t\v\n\r\f]。表示空白符,包括空格、水平制表符、垂直制表符、换行符、回车符、换页符。记忆方式:s是space character的首字母。
\S 就是[^ \t\v\n\r\f]。 非空白符。
1.3、量词
{m,} 表示至少出现m次。
{m} 等价于{m,m},表示出现m次。
? 等价于{0,1},表示出现或者不出现。记忆方式:问号的意思表示,有吗?
+ 等价于{1,},表示出现至少一次。记忆方式:加号是追加的意思,得先有一个,然后才考虑追加。
* 等价于{0,},表示出现任意次,有可能不出现。记忆方式:看看天上的星星,可能一颗没有,可能零散有几颗,可能数也数不过来。
1.4、多选分支
分支结构当前面的匹配上,后面的就不再尝试了
var regex = /goodbye|good/g;
var string = "goodbye";
console.log( string.match(regex) ); // ["goodbye"]
2、匹配位置
位置是相邻字符之间的位置。
^(脱字符)匹配开头,在多行匹配中匹配行开头。
$(美元符号)匹配结尾,在多行匹配中匹配行结尾。
\b是单词边界,具体就是\w和\W之间的位置,也包括\w和^之间的位置,也包括\w和$之间的位置。
(?=p),其中p是一个子模式,即p前面的位置。(?!p)和(?=p)相反。
3、分组
引用分组是括号一个重要的作用,可以进行数据提取,以及更强大的替换操作。
3.1、提取数据
比如提取日期:
var regex = /(\d{4})-(\d{2})-(\d{2})/;
3.2、替换数据
把yyyy-mm-dd格式,替换成yyyy/mm/dd
var regex = /(\d{4})-(\d{2})-(\d{2})/;
var string = "2019-12-26";
var result = string.replace(regex, "$1/$2/$3");
反向引用:比如\2,表示引用第2个分组
参考资料:
还没有评论,快来抢第一吧