(1)一些常用的元字符
-
.
匹配除换行符之外的任意字符,如果要包含任意字符,可使用(.|\n)
-
\w
匹配字母或数字或下划线或汉字,等价于[a-zA-Z0-9_]
-
\s
匹配任意的空白符,包含换页符\f
、换行符\n
、回车符\r
、水平制表符\t
、垂直制表符\v
-
\d
匹配数字 -
\b
匹配单词的开始或结束 -
^
匹配字符串的开始处 -
$
匹配字符串的结束处。 -
*
匹配前面的子表达式任意次。 -
[xyz]
字符集合,表示其中任意一个字符。表示范围可用-链接,例如[a-z] 表示a-z之间的任意一个字母。还可以这样书写[A-Za-z0-9]。 -
[^xyz]
字符集合,表示非其中任意一个字符。表示范围可用-链接,例如[^a-z]
表示非 a-z之间的任意一个字母。 -
|
表示或(or)关系,例如 com|cn,表示匹配com或者cn。 -
()
用于分组,其分组中的内容可已通过$1-$9按顺序获取(字符串相关方法中),之后的正则中也可以通过\1-\9进行引用(正则表达式内部)。(分组0表示整个正则匹配内容或整个正则表达式)
(2)要表示出现次数(重复)——限定符
-
a*
表示字符a连续出现次数 >= 0 次 -
a+
表示字符a连续出现次数 >= 1 次 -
a?
表示字符a出现次数 0 或 1 次 -
a{5}
表示字符a连续出现次数 5 次 -
a{5,}
表示字符a连续出现次数 >= 5次 -
a{5,10}
表示字符a连续出现次数为 5到10次 ,包括5和10
(3)常用方法
-
RegExp上用来匹配提取的方法——exec()
let matches=pattern.exec(str);
接受一个参数:源字符串
返回:结果数组,在没有匹配项的情况下返回null
结果数组包含两个额外属性,index表示匹配项在字符串中的位置,input表示源字符串,结果数组matches第一项即matches[0]表示匹配整个正则表达式匹配的字符串,matches[n]表示于模式中第n个捕获组匹配的字符串。
要注意的是,第一,exec()永远只返回一个匹配项(指匹配整个正则的),第二,如果设置了g修饰符,每次调用exec()会在字符串中继续查找新匹配项,不设置g修饰符,对一个字符串每次调用exec()永远只返回第一个匹配项。所以如果要匹配一个字符串中的所有需要匹配的地方,那么可以设置g修饰符,然后通过循环不断调用exec方法。
//匹配所有ing结尾的单词
const str="Reading and Writing";
let pattern=/\b([a-zA-Z]+)ing\b/g;
let matches;
while(matches=pattern.exec(str)){
console.log(matches.index +' '+ matches[0] + ' ' + matches[1]);
}
//循环2次输出
//0 Reading Read
//12 Writing Writ
-
判断是否匹配正则——test()
返回true或false
//判断数字区间在30~500
const num = 10;
const num1 = 50;
let pattern = /[3-9][0-9]|[1-4][0-9]{2}|500/;
console.log(pattern.test(num)); //false;
console.log(pattern.test(num1)); //true;
//判断电话号码,必须以1开始,第二位为3/5/7/8,之后为9位数字。
const phoneNumber = 15829061748;
const phoneNumber1 = 14023567896;
let pattern = /^1[3|5|7|8]\d{9}$/;
console.log(pattern.test(phoneNumber)); //true;
console.log(pattern.test(phoneNumber1)); //false;
-
匹配捕获的match方法
在字符串上调用match方法,本质上和在正则上调用exec相同,但是match方法返回的结果数组是没有input和index属性的。
const str="Reading and Writing";
let pattern=/\b([a-zA-Z]+)ing\b/g;
//在String上调用match
let matches=str.match(pattern);
console.log(matches);
//等价于在RegExp上调用exec
let matches1=pattern.exec(str);
console.log(matches1);
网友评论