常用的正则表达式规则

 修饰符

i: 忽略大小写

var pattern = /abc/i;
var string = "mdABc";
console.log(string.match(pattern));   //["ABc", index: 2, input: "mdABc", groups: undefined]

g: 全局,即不会在匹配到第一项后就停止,而是接着往后面匹配

var pattern = /abc/g;
var string = "mdabcLcabc";
console.log(string.match(pattern));   //["abc", "abc"]

m:多行匹配,当需要匹配的字符串中出现 \n或\r的时候

var pattern = /abc$/;
var string = "mdabc\n Lca";
console.log(string.match(pattern));   //null

var pattern = /abc$/m;
var string = "mdabc\n Lca";
console.log(string.match(pattern));   //["abc", index: 2, input: "mdabc↵ Lca", groups: undefined]

常用的元字符

var string = "123  dfg2 !&";
元字符描述相等于例子例子结果
\d数字字符

[1-9]

string.match(/\d/g)

["1", "2", "3", "2"]

\D非数字字符

[^1-9]

string.match(/\D/g)

["d", "f", "g", "!", "&"]

\w单词字符

[A-Za-z0-9_]

string.match(/\w/g)

["1", "2", "3", "d", "f", "g", "2"]

\W非单词字符

[^A-Za-z0-9_]

string.match(/\W/g)

[" ", " ", " ", "!", "&"]

\s

空白字符(几个空格就是几个,连起来的空格不会被算为一个)

string.match(/\s/g)

[" ", " ", " "] 

\S非空白字符

匹配的要求

var string = "123  dfg2 !&";
描述例子例子结果
^n从第一个匹配

string.match(/^\d/g)

["1"]
第一位开始,一遇到不匹配,就不成功string.match(/^\W/g)null
n$从最后开始匹配

string.match(/!&$/g)

//["!&"]

最后一位开始,一遇到不匹配,就不成功string.match(/\d$/g)null
n+匹配一个或多个n

string.match(/14+/g)

null
n*匹配零个及以上n

string.match(/14*/g)

["1"]
n?匹配零个及以上n

string.match(/14?/g)

["1"]
n{X}规定匹配X个n序列(X:连续的数量)的字符串

string.match(/2{2}/g)

null
n{X,}规定匹配至少X个n序列(X:连续的数量)的字符串string.match(/2{1,}/g)["2", "2"]
n{X, Y}规定匹配X到Y个n序列(X:连续的数量)的字符串string.match(/2{1,2}/g)["2", "2"]

方括号

var string = "123df52 !&";
描述例子例子结果
[abc]匹配方括号中任意一个字符

string.match(/[345]/g)

["3", "5"]
[^abc]匹配方括号以外的字符,[]内的^表示否

string.match(/[^123df5]/g)

[" ", "!", "&"]
[0-9]匹配所有数字

string.match(/[1-9]/g)

["1", "2", "3", "5", "2"]
[a-z]匹配所有小写字母string.match(/[a-z]/g)["d", "f"]
[A-Z]匹配所有大写字母
[\u4e00-\u9fa5]匹配中文

匹配获取到对应的字符串(获取多个加g不再展开)

获取完全匹配的子串

'asdfgh'.match(/asd/);
// ["asd", index: 0, input: "asdfgh", groups: undefined]

获取某种规则的子串

'asd123fgh'.match(/\d{3}/);
// ["123", index: 3, input: "asd123fgh", groups: undefined]

获取两端之间的子串(不包含两端)

'<div>hello</div>'.match(/(?<=\<div>).*?(?=\<\/div>)/);
// ["hello", index: 5, input: "<div>hello</div>", groups: undefined]

获取两端之间的子串(包含起始端)

'<div>hello</div>'.match(/(?=\<div>).*?(?=\<\/div>)/);
// ["<div>hello", index: 0, input: "<div>hello</div>", groups: undefined]

获取两端之间的子串(包含末端)

'<div>hello</div>'.match(/(?<=\<div>).*?(?<=\<\/div>)/); 
// ["hello</div>", index: 5, input: "<div>hello</div>", groups: undefined]

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值