JS正则表达式
1、语法(两种)
1、/字符串/ 2、new RegExp(可以为变量);
/*
1、/字符串/
2、new RegExp(可以为变量);
g ---- 表示全局匹配
*/
/*
测试的方法:
正则.test(字符串) 返回布尔值
字符串.match(正则) 把匹配到的放到一个数组里面
*/
var reg = /楠楠/g; //判断规则
var a = reg.test('我确定无疑都会楠楠下午');
console.log(a); //true
2、标识符(3个)
/*
g 全局匹配
i 不区分大小写
m 换行匹配
img 可以一起用没有先后顺序 i 和 m 和 g 的结合
*/
/*m*/
var str = 'AbcdeFGhijkaBc';
var reg = /(abc)/i;
var s = str.match(reg);
console.log(s);//[ "Abc", "Abc" ]
/*img*/
var str = 'AbcdeFGhijkaBc' +
'ABC,ABc';
var reg = /(abc)/img;
var s = str.match(reg);
console.log(s);//[ "Abc", "aBc", "ABC", "ABc" ]
3、特殊字符
转义字符:\ ---- 转义特殊字符
\s | 匹配空格/缩进 |
---|---|
\S | 匹配非空格 |
\d | 匹配数字 |
\D | 匹配非数字 |
\w | 匹配字符(字母、数字、下划线) |
\D | 匹配非字符 |
\b | 独立的单位 在起始位置 空格隔开 连词符(-)链接 结束为止 |
\D | 不独立 |
简写:
. | 所有字符 |
---|---|
^ | 表示字符集开始为止 |
$ | 表示结束位置 |
var str = '我就是你的最爱!';
var reg = /^我.+!$/g;
var a = str.match(reg);
console.log(a);//[ "我就是你的最爱!" ]
4、量词
把前面的匹配规则重复
a{x,y} | 匹配a ,x到y个都可以 |
---|---|
a{x,} | 至少有x个,x个以上 |
a{x} | 一定要x个 |
量词的简写:
{1,} | + | 至少有一个 |
---|---|---|
{0,} | * | 有或者没有 |
{0,1} | ? | 没有或者有一个 |
5、字符集
字符集:可以是单独的数字、字母、下划线,或者字母的范围,永远只会匹配一个字符,当然有量词除外
[0-9] | 数字 |
---|---|
[a-z] | 小写字母 |
[A-Z] | 大写字母 |
[0-9a-zA-Z] | 也是匹配一个字符:匹配0-9或者a-z或者A-Z或者_ |
6、子集:()和量词结合使用
var str = 'abccccd,abcef,abcabcabc';
var reg = /(abc){3}/g;
竖线的使用 | :字符集之外表示或,在子集里面也表示或
var str = "abccccd,abcdef,abcabcabc";
var reg = /a|b|c{3}/g;//在里面表示或
var reg2 = /(a|b|c){3}/g; //语法有误
consolelog(str.matcch(reg))
7、正则表达式的一些方法(两种)
1、str.search(正则):查找第一次出现的位置
var str = '_楠楠,你最踹了';
var reg = /楠楠/g;
var a = str.search(reg);
console.log(a);//1
2、str.replace(正则,回调函数/字符串/数字) ---- 替换
var str = '小科奥,你最踹了,我不爱你了,垃圾';
var reg = /垃圾|臭逼|毛线/g;
var str_2 = str.replace(reg,'**');//替换掉脏话
对应匹配替换
var str = prompt('请输入:');
var reg = /傻逼|垃圾/g;
var res = str.replace(reg,function(Shu){
var s = '';
for(var i=0;i<Shu.length;i++){
s += '*';
}
return s;
})
console.log(res);