正则(RegExp):用于检测字符串是否符合该规则,符合返回值为true,不符合返回值为false
一、定义正则表达式
1、字面量方式
javascript
const reg=/a/ // 字符串中含有a即可
2、构造函数方式
javascript
const reg0=new RegExp('a')
二、元字符(特殊字符)
1、\d :匹配数字 0~9
javascript
const reg1_1=/\d/
const reg1_2=/[0-9]/
2、\D :匹配非数字
javascript
const reg1_3=/\D/
3、\w :匹配 数字、字母、下划线 任意字符
javascript
const reg2_1=/\w/
4、\W :匹配非数字、字母、下划线 的任意字符
javascript
const reg2_2=/\W/
5、\s :匹配空白字符
javascript
const reg3_1=/\s/
6、\S :匹配非空白字符
javascript
const reg3_2=/\S/
匹配 数字或字母
javascript
const reg4=/[0-9a-zA-Z]/
console.log(reg3_1.test('1sd')); // false
console.log(reg3_1.test('asd ')); // true
console.log(reg4.test('1sd')); // true
console.log(reg4.test('1sd '));// true
console.log(reg4.test('_ ')); // false
二、边界符 ^ $
1、 ^: 以...开头
javascript
const reg5=/^js/ // 以js开头
console.log(reg5.test('jsqwe')); // true
2、$: 以...结尾
javascript
const reg6=/js$/ // 以js结尾
console.log(reg6.test('123js')); // true
3、精确匹配: /^...$/
javascript
const reg7=/^js$/
console.log(reg7.test('jsjs')); // false
console.log(reg7.test('js')); // true
三、量词
1、* :重复出现任意次
javascript
const reg1_1=/z*/
const reg1_2=/^z*$/
console.log(reg1_1.test('zzz')); // true
console.log(reg1_1.test('zzzdd')); // true
console.log(reg1_2.test('zzz')); // true
console.log(reg1_2.test('zzzdd')); // false
2、+:重复至少一次
javascript
const reg2_1=/z+/
const reg2_2=/^z+$/
console.log(reg2_1.test('')); // false
console.log(reg2_1.test('zzzd')); // true
console.log(reg2_2.test('')); // false
console.log(reg2_2.test('zzz')); // true
console.log(reg2_2.test('zzzdd')); // false
3、?:重复0次或1次
javascript
const reg3=/^(zx)?$/
console.log(reg3.test('')); // true
console.log(reg3.test('zx')); // true
console.log(reg3.test('zxzx'));// false
4、{n} :重复 n 次
javascript
const reg4=/^(zx){2}$/
console.log(reg4.test('zx')); // false
console.log(reg4.test('zxzx')); // true
console.log(reg4.test('zxzxzx')); // false
5、{n,} :重复至少 n 次
javascript
const reg5=/^(zx){2,}$/
console.log(reg5.test('zx')); // false
console.log(reg5.test('zxzx')); // true
console.log(reg5.test('zxzxzx')); // true
6、{n,m} :重复至少 n 次,至多 m 次
javascript
const reg6=/^(zx){2,4}$/
console.log(reg6.test('zxzx')); // true
console.log(reg6.test('zxzxzxzx')); // true
console.log(reg6.test('zxzxzxzxzx')); // false
四、范围:[ ]
javascript
const reg1_1=/^[xyz]$/
const reg1_2=/[xyz]/
console.log(reg1_1.test('xx')); // false
console.log(reg1_1.test('x')); // true
console.log(reg1_1.test('p')); // false
console.log(reg1_2.test('xx')); // true
console.log(reg1_2.test('x')); // true
console.log(reg1_2.test('p')); //false
1、匹配 数字、字母、下划线
javascript
const reg2=/^[0-9a-zA-Z_]$/
console.log(reg2.test('33')); //false
console.log(reg2.test('3')); //true
console.log(reg2.test('_')); //true
2、中括号内的 ^ 表示取反
javascript
const reg4=/^[^xyz]$/
console.log(reg4.test('xx')); // false
console.log(reg4.test('x')); // false
console.log(reg4.test('p')); // true
五、修饰符:g,i
javascript
let str='今年是tmd个好日子,tmd,学好js,tmd,TMD,tMd'
// 替换敏感词
// replace
const newStr=str.replace('tmd','**')
console.log(newStr)
console.log(str);
let newStr1=str.replace(/tmd/,'**')
console.log(newStr1);
1、修饰符g:默认正则是惰性的,可以通过修饰符 g 来全部匹配
javascript
let newStr2=str.replace(/tmd/g,'**')
console.log(newStr2); //今年是**个好日子,**,学好js,**,TMD,tMd
2、修饰符 i :忽略大小写
javascript
let newStr3=str.replace(/tmd/gi,'**')
console.log(newStr3); // 今年是**个好日子,**,学好js,**,**,**