正则基础知识

正则表达式

1 定义正则

1
2
let reg = new RegExp("G");//RegExp对象,参数就是我们要制定的规则
let reg = /G/; //一般写法,推荐使用,性能更好

2 常用方法

  • test():在字符串中查找符合正则的内容,找到返回true,反之返回false
1
2
3
4
//判断数字是否有非数字
let str ='1233456';
let reg = /\D/;
console.log(reg.test(str));//false
  • exec()

RegExp的exec()方法和String的match()方法很类似,
它对一个指定的字符串执行一个正则表达式匹配,如果没有找到任何一个匹配,
它将返回null,否则返回一个数组,这个数组的第一个元素包含的是与正则表达
式相匹配的字符串,余下的所有元素包含的是匹配的各个分组。而且,正则表达式
对象的index属性还包含了匹配发生的字符串的位置,属性input引用的则是被检
索的字符串。如果正则表达式具有g标志,它将把该对象的lastIndex属性设置到
紧接着匹配字符串的位置开始检索,如果exec()没有发现任何匹配,它将把
lastIndex属性重置为0,这一特殊的行为可以使你可以反复调用exec()遍历一个字
符串中所有的正则表达式匹配。

1
2
3
4
let str5 = 'cat,fat,bat,sat,cct';
let reg5 = /.at/g;
reg5.lastIndex = 10;
console.log(reg5.exec(str5));//[ 'cat', index: 0, input: 'cat,fat,bat,sat,cct' ]

  • replace():查找符合正则的字符串,替换成对应的字符串
1
2
3
4
5
6
7
8
9
10
11
12
13
14
//替换关键字
let str4 = '七夕,JJ,我在月下等你';
let reg4 = /七夕|JJ/g;
/*str4 = str4.replace(reg4,'*');
console.log(str4);//*,*,我在月下等你.有点问题啊,那么就不要直接替换,我们用个回调函数解决
*/
str4 = str4.replace(reg4,function (str4) {
let res = '';
for(let i =0;i<str4.length;i++){
res +='*';
}
return res;
});
console.log(str4);//**,**,我在月下等你
  • search():在字符串搜索符合正则的内容,搜索到就返回出现的位置注意:如果找到多个,则只会返回第一个找到的字符的位置,找不到就返回-
1
2
3
4
//在字符串中找到字母b,且不区分大小写
let str2 = 'abcbdef';
let reg2 = /B/gi;
console.log(str2.search(reg2));//2 找到的第一个字符的位置
  • match():在字符串中搜索符合规则的内容,搜索成功就返回内容,反之则返回null
1
2
3
4
//找到指定格式的所有数字
let str3 = 'haj123sdk54hask33dkhalsd879';
let reg3 = /\d+/g;//每次至少匹配一个数字
console.log(str3.match(reg3));//[ '123', '54', '33', '879' ]

3 常见字符

  • 转义字符

这几个常见转义字符还是要的顺手记下滴

1
2
3
4
5
6
7
8
\s :空格
\S :非空格
\d :数字
\D :非数字
\w :字符(字母,数字,下划线那些)
\W :非字符
. :任意字符
\. :真正的点

  • 量词

1
2
3
4
5
6
{n,m} :出现n~m次
{n,} :至少n次
{n} :出现n次
* :任意次
? :1次或者0次,相当于{0,}
+ :1~n次
  • 其他符号

1
2
3
4
5
6
^ :匹配输入串的开始位置
$ :匹配输入串的结束位置
[] :[]里面的任意字符
[^] :非[]里面的任意字符
() :分组符,小括号中的项叫做正则的子项
$1($n) :正则式中的第1(n)个子项


----------- 本文结束 -----------




小红帽 wechat
想看更多文章,那就订阅我的微信公众号吧
如果觉得我的文章对你有很大帮助的话,请我喝杯奶茶吧~(@^_^@)~