正则语言(转的 大额_skylar )

Posted 暗影侠客

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了正则语言(转的 大额_skylar )相关的知识,希望对你有一定的参考价值。

 备注:正则表达式真的很头疼,收集起来,用起来很方便的。

  常用的元字符

. 匹配除换行符以外的任意字符
\\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
\\0nn 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)yes|no) 把exp当作零宽正向先行断言,如果在这个位置能匹配,使用yes作为此组的表达式;否则使用no
(?(exp)yes) 同上,只是使用空表达式作为no
(?(name)yes|no) 如果命名为name的组捕获到了内容,使用yes作为表达式;否则使用no
(?(name)yes) 同上,只是使用空表达式作为no

 

 

 

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

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

3、匹配空白行的正则表达式:\\n\\s*\\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-4405222 或 021-87888822

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

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表情:    

     return this.replace(/([\\uE000-\\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.jb51.net/tools/zhengze.html#metacode

以上是关于正则语言(转的 大额_skylar )的主要内容,如果未能解决你的问题,请参考以下文章

神通广大的CSS3选择器

神通广大的CSS3选择器

如何减少页面之间跳转的延迟(片段/活动)

大额支付行号是干啥用的?

正则表达式之match与exec[转的楼兰之风的]

通过 Java 正则表达式提取 semver 版本字符串的片段