加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

常用的正则表达式收集

发布时间:2020-12-14 00:54:10 所属栏目:百科 来源:网络整理
导读:常用的元字符 . 匹配除换行符以外的任意字符 w 匹配字母或数字或下划线或汉字 s 匹配任意的空白符 d 匹配数字 b 匹配单词的开始或结束 ^ 匹配字符串的开始 $ 匹配字符串的结束 常用的限定符 * 重复零次或更多次 + 重复一次或更多次 ? 重复零次或一次 {n}

常用的元字符

. 匹配除换行符以外的任意字符
w 匹配字母或数字或下划线或汉字
s 匹配任意的空白符
d 匹配数字
b 匹配单词的开始或结束
^ 匹配字符串的开始
$ 匹配字符串的结束

常用的限定符

* 重复零次或更多次
+ 重复一次或更多次
? 重复零次或一次
{n} 重复n次
{n,} 重复n次或更多次
{n,m} 重复n到m次

 常用的反译代码                                 

W 匹配任意不是字母,数字,下划线,汉字的字符
S 匹配任意不是空白符的字符
D 匹配任意非数字的字符
B 匹配不是单词开头或结束的位置
[^x] 匹配除了x以外的任意字符
[^aeiou] 匹配除了aeiou这几个字母以外的任意字符

常用的分组语法                                

捕获 (exp) 匹配exp,并捕获文本到自动命名的组里
(?<name>exp) 匹配exp,并捕获文本到名称为name的组里,也可以写成(?'name'exp)
(?:exp) 匹配exp,不捕获匹配的文本,也不给此分组分配组号
零宽断言 (?=exp) 匹配exp前面的位置
(?<=exp) 匹配exp后面的位置
(?!exp) 匹配后面跟的不是exp的位置
(?<!exp) 匹配前面不是exp的位置
注释 (?#comment) 这种类型的分组不对正则表达式的处理产生任何影响,用于提供注释让人阅读

   惰性限定符                              

*? 重复任意次,但尽可能少重复
+? 重复1次或更多次,但尽可能少重复
?? 重复0次或1次,但尽可能少重复
{n,m}? 重复n到m次,但尽可能少重复
{n,}? 重复n次以上,但尽可能少重复

    其他匹配

a 报警字符(打印它的效果是电脑嘀一声)
b 通常是单词分界位置,但如果在字符类里使用代表退格
t 制表符,Tab
r 回车
v 竖向制表符
f 换页符
n 换行符
e Escape
nn ASCII代码中八进制代码为nn的字符
xnn ASCII代码中十六进制代码为nn的字符
unnnn Unicode代码中十六进制代码为nnnn的字符
cN ASCII控制字符。比如cC代表Ctrl+C
A 字符串开头(类似^,但不受处理多行选项的影响)
Z 字符串结尾或行尾(不受处理多行选项的影响)
z 字符串结尾(类似$,但不受处理多行选项的影响)
G 当前搜索的开头
p{name} Unicode中命名为name的字符类,例如p{IsGreek}
(?>exp) 贪婪子表达式
(?<x>-<y>exp) 平衡组
(?im-nsx:exp) 在子表达式exp中改变处理选项
(?im-nsx) 为表达式后面的部分改变处理选项
(?(exp)yesno) 把exp当作零宽正向先行断言,如果在这个位置能匹配,使用yes作为此组的表达式;否则使用no
(?(exp)yes) 同上,只是使用空表达式作为no
(?(name)yesno) 如果命名为name的组捕获到了内容,使用yes作为表达式;否则使用no
(?(name)yes) 同上,只是使用空表达式作为no

1、匹配中文字符的正则表达式:[u4e00-u9fa5]
  评注:匹配中文还真是个头疼的事,有了这个表达式就好办了

2、匹配双字节字符(包括汉字在内):[^x00-xff]
  评注:可以用来计算字符串的长度(一个双字节字符长度计2,ASCII字符计1)

3、匹配空白行的正则表达式:ns*r
  评注:可以用来删除空白行

4、匹配HTML标记的正则表达式:<(S*?)[^>]*>.*?</1><.*?/>
  评注:网上流传的版本太糟糕,上面这个也仅仅能匹配部分,对于复杂的嵌套标记依旧无能为力

5、匹配首尾空白字符的正则表达式:^s*s*$
  评注:可以用来删除行首行尾的空白字符(包括空格、制表符、换页符等等),非常有用的表达式

6、匹配Email地址的正则表达式:w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*
  评注:表单验证时很实用

7、匹配网址URL的正则表达式:[a-zA-z]+://[^s]*
  评注:网上流传的版本功能很有限,上面这个基本可以满足需求

8、匹配帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线):^[a-zA-Z][a-zA-Z0-9_]{4,15}$
  评注:表单验证时很实用

9、匹配国内电话号码:d{3}-d{8}d{4}-d{7}
  评注:匹配形式如0511-4405或021-87822

10、匹配腾讯QQ号:[1-9][0-9]{4,}
  评注:腾讯QQ号从10开始

11、匹配中国邮政编码:[1-9]d{5}(?!d)
  评注:中国邮政编码为6位数字

12、匹配身份证:d{15}d{18}
  评注:中国的身份证为15位或18位

13、匹配ip地址:d+.d+.d+.d+
  评注:提取ip地址时有用

14、匹配特定数字:
^[1-9]d*$  //匹配正整数
^-[1-9]d*$ //匹配负整数
^-?[1-9]d*$  //匹配整数
^[1-9]d*0$ //匹配非负整数(正整数+0)
^-[1-9]d*0$  //匹配非正整数(负整数+0)
^[1-9]d*.d*0.d*[1-9]d*$  //匹配正浮点数
^-([1-9]d*.d*0.d*[1-9]d*)$ //匹配负浮点数
^-?([1-9]d*.d*0.d*[1-9]d*0?.0+0)$ //匹配浮点数
^[1-9]d*.d*0.d*[1-9]d*0?.0+0$  //匹配非负浮点数(正浮点数+0)
^(-([1-9]d*.d*0.d*[1-9]d*))0?.0+0$  //匹配非正浮点数(负浮点数+0)
  评注:处理大量数据时有用,具体应用时注意修正

15、匹配特定字符串:
^[A-Za-z]+$  //匹配由26个英文字母组成的字符串
^[A-Z]+$  //匹配由26个英文字母的大写组成的字符串
^[a-z]+$  //匹配由26个英文字母的小写组成的字符串
^[A-Za-z0-9]+$  //匹配由数字和26个英文字母组成的字符串
^w+$  //匹配由数字、26个英文字母或者下划线组成的字符串

16、过滤 EMOJI表情:

returnthis.replace(/([uE-uF8FF]uD83C[uDF00-uDFFF]uD83D[uDC00-uDDFF])/g,'')

17、匹配页面所有的{{name}}这样的:

1     var rformat = /?{{([^{}]+)}}/gm;
2     function getMessage() {
3         var data = this.data  {}
4         return this.message.replace(rformat,function(_,name) {
5             return data[name]  ""
6         })
7     }

非常好的学习资源:http://www.aspzz.cn/tools/zhengze.html#metacode

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读