正则表达式(基础、常用)

正则(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,**,**,**
相关推荐
Patrick在香港1 天前
Python正则表达式实战:解析和验证香港身份证、车牌、电话格式
开发语言·python·正则表达式
吴声子夜歌3 天前
正则指引——Ruby
开发语言·正则表达式·ruby
吴声子夜歌3 天前
正则指引——Golang
开发语言·golang·正则表达式
吴声子夜歌4 天前
正则指引——PHP
开发语言·正则表达式·php
吴声子夜歌6 天前
正则指引——断言
正则表达式
吴声子夜歌6 天前
正则指引——匹配原理
java·正则表达式
吴声子夜歌7 天前
正则表达式——环视
开发语言·正则表达式
吴声子夜歌8 天前
正则表达式——边界
正则表达式
营养充电站8 天前
C++23 新特性在 CLion 中的实战体验
macos·docker·jupyter·正则表达式