正则查询
正则查询

正则查询

 

常用的元字符

代码
匹配除换行符以外的任意字符
匹配字母或数字或下划线或汉字
匹配任意的空白符
匹配数字
匹配单词的开始或结束
匹配字符串的开始
匹配字符串的结束

简单示例

0\\d\\d-\\d\\d\\d\\d\\d\\d\\d\\d
0\\d{2}-\\d{8}
匹配以0开头,后面跟着两个数字-8个数字 的电话号码.

分枝条件(或)

|
如:
0\\d{2}-\\d{8}|0\\d{3}-\\d{7}
就可以匹配 012-12345678或者0123-1234567 之类的号码

分组(){}

(\\d{1,3}\\.){3}\\d{1,3}
上面的意思是匹配一个1-3位数的数字且后面加个点 比如: 123. 重复三次如 123.1.2. 最后后面再跟上一个1-3位数字.

常用的反义代码

代码
说明
匹配任意不是字母,数字,下划线,汉字的字符
匹配任意不是空白符的字符
匹配任意非数字的字符
匹配不是单词开头或结束的位置
匹配除了x以外的任意字符
匹配除了aeiou这几个字母以外的任意字符

贪婪与懒惰

注意:正则表达式有另一条规则,比懒惰/贪婪规则的优先级更高:最先开始的匹配拥有最高的优先权——The match that begins earliest wins。

懒惰限定符

代码
说明
重复任意次,但尽可能少重复
重复1次或更多次,但尽可能少重复
重复0次或1次,但尽可能少重复
重复n到m次,但尽可能少重复
重复n次以上,但尽可能少重复

常用正则表达式

  • 匹配中文字符
    • [\\u4e00-\\u9fa5]
      
  • 匹配双字节字符(包括汉字在内)
    • [^\\x00-\\xff]
      
  • 匹配空白行
    • \\n\\s*\\r
      
  • 匹配Email地址
    • [\\w!#$%&'*+/=?^_`{|}~-]+(?:\\.[\\w!#$%&'*+/=?^_`{|}~-]+)*@(?:[\\w](?:[\\w-]*[\\w])?\\.)+[\\w](?:[\\w-]*[\\w])?
      
  • 匹配网址URL
    • [a-zA-z]+://[^\\s]*
      
  • 匹配国内电话号码
    • \\d{3}-\\d{8}|\\d{4}-\\{7,8}
      
  • 匹配腾讯QQ号
    • [1-9][0-9]{4,}
      
  • 匹配中国邮政编码
    • [1-9]\\d{5}(?!\\d)
      
  • 匹配18位身份证号
    • ^(\\d{6})(\\d{4})(\\d{2})(\\d{2})(\\d{3})([0-9]|X)$
      
  • 匹配(年-月-日)格式日期
    • ([0-9]{3}[1-9]|[0-9]{2}1-9{1}|[0-9]{1}1-9{2}|1-9{3})-(((0[13578]|1[02])-(0[1-9]|12|3[01]))|((0[469]|11)-(0[1-9]|12|30))|(02-(0[1-9]|1|2[0-8])))
      
  • 匹配正整数
    • ^[1-9]\\d*$
      
  • 匹配负整数
    • ^-[1-9]\\d*$
      
  • 匹配整数
    • ^-?[1-9]\\d*$
      
  • 匹配非负整数(正整数 + 0)
    • ^[1-9]\\d*|0$
      
  • 匹配非正整数(负整数 + 0)
    • ^-[1-9]\\d*|0$
      
  • 匹配正浮点数
    • ^[1-9]\\d*\\.\\d*|0\\.\\d*[1-9]\\d*$
      
  • 匹配负浮点数
    • ^-[1-9]\\d*\\.\\d*|-0\\.\\d*[1-9]\\d*$
      
  • 匹配版本号
    • \\d+(\\.\\d+){0,2}
      
      {0,2}表示重复字数,改成*不限次数.根据需要,^判断起始位置,$判断结尾.如(仅匹配0.0.0格式):
      ^\\\\d+(\\\\.\\\\d+){2}$