js-正则表达式使用大全



我的博客:xiaolan1.icu



一、正则表达式语法

1.修饰符

i    对大小写不敏感

g   全局匹配,匹配出多组数据构成一个一维数组

m   多行匹配

?    匹配0个或1个

+    匹配一个或多个

*    匹配0个或多个

2.模式

①元字符(常用)

\d   匹配数字

\D   匹配非数字

\s   匹配空白字符和换号

\S   匹配非空白

\w    匹配字母数字下划线

\W    匹配除了字母数字下划线

.     匹配除了换行以外的任意字符

[\s\S]   匹配所有字符

[\d\D]  匹配所有字符

②表达式

[asd]  查找方括号之间任何字符,可看做 a||s||d

[0-9]  查找0-9任何数字

(123|asd) 查找括号中满足的一组数 ,可看做 123||asd

{1,3}  查找满足的个数为1-3个

二、演示

1、字面量创建(常用)

let s='xiaolan123'
let a='lan'
console.log(eval(`/${a}/`).test(s))   // true

2、对象方式创建

let reg=new RegExp('lan')
console.log(reg)           // /lan/
let s='xiaolan123'
console.log(reg.test(s))  // true

3、选择符 | 的使用

let tel='010-12345678'
console.log(/(010|020)\-\d{7,8}/.test(tel))	//true
//(010|020)表示010||020, \-表示- (\为转义字符),\d{7,8}表示满足数字7-8个

4、原子组 ()的使用

console.log('asd123456'.match(/(12|34)/g))   //['12','34']

5、转义 \ 的使用

let url='http://xiaolan1.icu'
console.log(/http:\/\/\w+\.\w+/.test(url)) 	// true
//   \/转义为/  \.转义为.

6、字符边界符 ^ $ 的使用

let url='http://xiaolan1.icu'
console.log(/^(http:)\/\/\w+.(\w+)$/.test(url))  //true
//^(http:)表示匹配以http:开头,(\w+)$表示以1个或多个字母符号下划线结尾

7、[^]的使用

let url='http://xiaolan1.icu'
console.log(url.match(/[^:\/\.]+/g))		//['http','xiaolan1','icu']
//[^:\/.]表示不匹配: / .

8、点字符的使用

let url='http://xiao\nlan1.icu'
console.log(url.match(/.+/g))    		//['http://xiao', 'lan1.icu']

9、m 多行匹配的使用

let url=`
  #1 xiaolan1.icu #
  #2 baidu.com #
`
console.log(url.match(/^\s.+/g))		//['\n  #1 xiaolan1.icu #']
console.log(url.match(/^\s.+/mg))		//['\n  #1 xiaolan1.icu #', '  #2 baidu.com #']

10、原子表 []的使用

let time= '2021-09/28'
console.log(time.match(/^\d{4}[-\/]\d{2}[-\/]\d{2}$/))  //['2021-09/28']

11、嵌套分组与不记录分组

let url=`
 https://www.baidu.com
 http://xiaolan1.icu
`
let reg=/https?:\/\/((w+\.)?\w+\.(?:com|org|cn))/i
console.log(url.match(reg))   //["https://www.baidu.com", "www.baidu.com", "www."]
//第一个元素是整体匹配的结果,第二个元素是((w+\.)?\w+\.(?:com|org|cn))匹配的结果,第三个括号是 (w+\.),因为括号(?:com|org|cn)中有?: 所以不记录该分组

12、禁止贪婪 (意思为内容尽可能少)

let url = 'xiaolan1.icu'
console.log(url.match(/xiao\w+?/))			//['xiaol']  表示\w+只匹配一个字母符号下划线
console.log(url.match(/xiao\w*?/))			//['xiao']  表示\w*只匹配0个字母符号下划线
console.log(url.match(/xiao\w{2,4}?/))			//['xiaola']  表示\w{2,4}只匹配2个字母符号下划线

13、matchAll全局匹配的使用

let url = 'www.xiaolan1.icu.123456'
let reg = /\w+\./gi
let result = url.matchAll(reg)
let arr = []
for (i of result){
    console.log(i);			//依次打印出 ['www.']  ['xiaolan1.']  ['icu.']
    arr.push(i[0])
}
console.log(arr);   		//["www.", "xiaolan1.", "icu."]

14、serach方法的使用

 let url = 'xiaolan1.icu'
 console.log(url.search(/l/));     		//4
 console.log(url.search(/\d.\w+/));		//7
//从0开始打印出匹配出元素的首个位置

15、$&的使用

let url = 'xiaolan1.icu'
url.replace(/\w+./,`$&`)
console.log(url) 				//  xiaolan.icu
//$&为匹配元素自身

三、常用的正则匹配示例

参考网站:http://tools.jb51.net/regex/create_reg/

1、手机号码(国内)

/0?(13|14|15|18)[0-9]{9}/

2、中文字符

/[\u4e00-\u9fa5]/

3、邮箱判断

/\w[-\w.+]*@([A-Za-z0-9][-A-Za-z0-9]+\.)+[A-Za-z]{2,14}/

4、网址判断

/^((https|http|ftp|rtsp|mms)?:\/\/)[^\s]+/

5、身份证号(15位或18位)

/\d{17}[\d|x]|\d{15}/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

blue11l

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值