正则表达式
正则表达式的作用:匹配特殊字符或有特殊搭配原则的字符的最佳选择
1.正则字符
".":匹配除了换行符(\n)和行结束符(\r),这两个字符之外其他的字符。
"\w":单词字符:匹配字母,数字,下划线.
"\W":非单词字符:
"\s" 匹配空白符的字符.空白字符都包括:空格符、制表符(\t)、回车符(\r),换行符(\n),垂直换行符(\v)、换页符(\f)。因此\s = [\n\t\r\v\f];
"\S" 匹配任意不是空白符的字符
"\d" 匹配数字的字符
"\D" 匹配任意非数字的字符
"\b" 匹配单词开头或结束的位置(边界)字符
"\B" 匹配不是单词开头或结束的位置(非边界)字符
匹配任意字符的话,就可以搭配起来使用了:[\s\S]、[\d\D]、[\w\W]等都可以
"[^abc]" 匹配除了abc以外的任意字符
符。
量词
以下的n代表一个变量,可以是表达式或者元字符。
1.n+ 匹配至少一个变量n
2.n* 匹配至少零个变量n
var reg = /\w*/g; var str = 'aabbbccc'; console.log(str.match(reg)); // ["aabbbccc", ""]最后有一个空串,因为前面的单词被\w*匹配出来,最后还有一个空字符可以被\w*0匹配出来。
3.n? 匹配0-1个变量n
var reg=/(aa|b)?/g; var str = 'aaaaacb'; console.log(str.match(reg)); // ["aa", "aa", "", "", "b", ""]中间的空串是因为匹配了空串,?取0的情况。
4.n{x} 可以规定匹配x个变量n
并且大括号可以写一个区间,中间用逗号链接。
var reg = /a{1,4}/g; var str = 'aaaaa'; console.log(str.match(reg)); // ["aaaa", "a"]这里默认的是贪婪匹配,即尽可能匹配多个字符。
当我们在后面加一个”?”之后,就会变成最小匹配,尽可能匹配少的字符。
var reg = /a{1,4}?/g; var str = 'aaaaaa'; console.log(str.match(reg)); // ["a", "a", "a", "a", "a", "a"]
不只是{}后面可以加”?”,其他的比如*?、+?等等后面都可以加问号。
或者第二个范围不写,这样就代表到无穷的范围。
var reg = /a{1,}/g; var str = 'aaaaa'; console.log(str.match(reg)); // ["aaaaa"]
5.n$ 匹配以n结尾的字符
6.^n 匹配以n开头的字符,注意不是[]里面的^。
var reg = /^abc$/g; //这种写法可以匹配固定字符串abc。
7.n(?=xxx)
正向预查(正向断言)
1 var reg = /x(?=abc)/g; 2 var str = 'xabcxbcdaabc'; 3 console.log(str.match(reg)); // x
匹配后面是abc的n,匹配的是n,后面有abc是一种条件。
如果n是一个空,那么就查找后面是abc的a前面那个空串了。
8.n(?!xxx) 非正向预查 匹配后面不是abc的n
如果要匹配*、?等这些字符的话,就需要在前面加上一个转义字符“/”了。