美文网首页
一些正则用法收藏

一些正则用法收藏

作者: vavid | 来源:发表于2021-01-16 22:12 被阅读0次

千位分隔符

数字每隔三位,加一个逗号,,方便阅读。

let str = '12345678.89';
str = str.replace(/(?=(?:\d{3})+(?!\d))/g,',');
alert(str);

正则表达式的声明方式

1. 构造函数:new RegExp('^\\w+$', 'm')

2. 字面量:/^\w+$/m

声明:后者快10倍

使用:后者快100倍

匹配模式

i 忽略大小写
m 多行模式:字符^$匹配每一行的开始和结束
g 全局匹配:不只是匹配第一个
u Unicode模式:处理大于\uFFFF的字符
y 黏度:只从 lastIndex 开始匹配 1 次(不能跟g合用,否则失效)

特殊字符

^ $ . \d \D \w \W \s \S \b \B ……

\b 单词边界;

英文:[^a-zA-Z0-9_]^$

中文:[a-zA-Z0-9_]^$

"he_llo我的reg exp".match(/\b\S+?\b/g) 
// ["he_llo", "我的", "reg", "exp"]

数量词

x{n} x连续出现n次
x{n,m} x连续出现n到m次
x{n,} x连续出现n+次

例如:

x? == x{0,1}
x* == x{0,}
x+ == x{1,}

条件

[xy] 匹配一个字符,x或y
[^xy] 匹配一个字符,非x非y
x|y 满足x或y
x(?=y) x后必须是y,但y不纳入结果集
(?!x) 不包含x

例如:

  '张三20岁,李四24年'.match(/\d+(?=岁)/g)
  /^(?:(?!admin)\w)+$/.test('imadmin')

捕获组

(x) 匹配x并存储结果
(?:x) 匹配x但不存储结果

例如:

/(?:a|b)(\d+)/.exec('ab1c2')

反向引用

\n 匹配第n个分组(x)

例如:

// 捕获class=u的所有标签

var s = '<a class="u">AA</a><b class="u"></b>';

var r = /<([a-z]+) class=(["'])u\2[\s\S]+?<\/\1>/ig;

s.match(r);

贪婪模式

最大可能匹配

x* == x{0,}
x+ == x{1,}

例如:

/.*江/.exec('沪江沪江沪江')

非贪婪模式

最小可能匹配

x*?
x+?

/.*江/.exec('沪江沪江沪江')

应用

*   RegExp.p.exec(string) array
*   RegExp.p.test(string) boolen
*   String.p.match(regexp) array
*   String.p.replace(str|regexp, str|func) string
*   String.p.search(regexp) number
*   String.p.split(str|regexp, limit) array

实战

  • 验证邮箱格式
  • 从URL中获取参数值
  • 从富文本中获取非外链的A标签
  • 构造简单的模板引擎
var s = '<div><a class="red" href="/intro/200">class200</a><a href="http://qq.com/">qq</a><a href="/?from=http://g.cn">home</a></div>';

var r = /<a [^>]*href=(["'])(?!https?:\/\/).+?\1[^>]*>[\s\S]*?<\/a>/ig;

function render(s, json) {

 for (var name in json) {

  s = s.replace(new RegExp('{{' + name + '}}', 'ig'), json[name]);

 }

 return s;

}

相关文章

  • 一些正则用法收藏

    千位分隔符 数字每隔三位,加一个逗号,,方便阅读。 正则表达式的声明方式 1. 构造函数:new RegExp('...

  • 英语常见错误

    小编为大家整理了一些英语中常见的错误,其中涉及介词用法、连词用法、副词用法、动词用法以及单词的选择,非常值得收藏!...

  • Python正则表达式分组 Group

    在正则表达式介绍中,我们学习了正则表达式的基本用法。列举了一些简单的例子。在这一部分,将介绍更高级的用法,捕获分组...

  • 正则的一些用法

    首先,一些基本的: \d 匹配一个数字,等价于[0-9]\D 匹配一个非数字,等价于[^0-9]\w 匹配...

  • 常用正则方法

    可以使用正则的方法 常见的用法 实际用法 用法规则 字符簇

  • 第四周打卡

    本周的主题是『正则』。下面列举一些常用的正则字符及用法。 正则中的特殊字符 大写和小写字符一般是一个补集的关系。 ...

  • javascript正则表达式使用小结

    正则在很多编程语言中都有,它们的用法基本都是类似的,不同的语言可能会存在一些区别。在JavaScript中,正则也...

  • 正则表达式

    用法。常用正则表达式。详细用法 //正则表达式:记录文本规则的代码 //常用的正则表达式的地方:登录,密码等格式的...

  • Java学习(持续更新)

    正则表达式matches用法

  • 正则学习记录

    题注:正则表达式也称为规则表达式或字符串规则表达式,此文记录正则表达式的一些基本用法,适合正则入门使用。 基本规则...

网友评论

      本文标题:一些正则用法收藏

      本文链接:https://www.haomeiwen.com/subject/oqvzektx.html