正则表达式

一、概念

正则表达式,又称规则表达式。(英语:Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本。在众多语言中都可以支持正则表达式,如Perl、PHP、Java、Python、Ruby等。当然在Java中也可以通过处理字符串的方式达到检索,替换文本字符串的目的,但是有了正则表达式写代码更加简洁,通常两三行代码就可以达到目的,当然这也是建立在熟悉正则表达式的基础之上的。

二、语法

2.1、常用元字符

正则表达式常用的元字符如下:

元字符 说明
\d 匹配数字,相当于[0-9]
\D 匹配非数字,相当于[^0-9]
\w 匹配字母、数字、汉字或下划线的字符
\W 匹配任意不是字母、数字、汉字或下划线的字符
\s 匹配任意的空白符,如空格、换行符、制表符等
\S 匹配任意不是空白符的字符
. 匹配除了换行符以外的任意字符
[…] 匹配方括号内的所有字符
[^…] 匹配非方括号中的所有字符

2.2、连接符

连接符 说明
[0-9] 匹配数字,相当于\d
[a-z] 匹配英文小写字母 测验
[A-Z] 匹配英文大写字母
[0-9a-zA-Z] 匹配数字或英文字母

2.3、限定符

限定符 说明
+ 重复1次或多次 测验
* 重复0次或更多次 测验
重复0次或1次 测验
{n} 重复n次 测验
{n,} 重复n次或更多次 测验
{n,m} 重复n到m次 测验

3.4、定位符

定位符 说明
^ 限定开始位置的字符
$ 限定结尾的字符
\b 限定单词(字)边界的字符
\B 限定非单词(字)边界的字符

3.5、转义字符

转义字符 说明
\a 匹配字符串开始位置
\b 退格
\n 回车换行
\t Tab制表
\f 换页
单引号’
" 双引号"
\v 挑格
\r 换行
\z 匹配字符串结束位置
\\ 反斜杠\
\OOO 八进制整数,范围为000~777
\xHH 十六进制整数,范围为00~FF
\uhhhh 十六进制编码的Unicode字符

3.6、选择符

选择符 说明
| 匹配两个选项中任意一个 测验

3.7、分组

园括号()用于子表达式分组,即把一个正则表达式的全部或部分分成一个或多个组,分组后用园括号括起来的表达式看作一个整体。

四、工具

正则表达式可视化 >>
正则表达式在线测试工具 >>

五、常用表达式

5.1、校验数字的表达式

  • 数字:^[0-9]*$
  • n位的数字:^\d{n}$
  • 至少n位的数字:^\d{n,}$
  • m-n位的数字:^\d{m,n}$
  • 零和非零开头的数字:^(0|[1-9][0-9]*)$
  • 非零开头的最多带两位小数的数字:^([1-9][0-9]*)+(.[0-9]{1,2})?$
  • 带1-2位小数的正数或负数:^(-)?\d+(.\d{1,2})$
  • 正数、负数、和小数:^(-|+)?\d+(.\d+)?$
  • 有两位小数的正实数:^[0-9]+(.[0-9]{2})?$
  • 有1~3位小数的正实数:^[0-9]+(.[0-9]{1,3})?$
  • 非零的正整数:^[1-9]\d*$ 或 ^([1-9][0-9]){1,3}$ 或 ^+?[1-9][0-9]$
  • 非零的负整数:^-[1-9][]0-9"$ 或 ^-[1-9]\d$
  • 非负整数:^\d+$ 或 ^[1-9]\d*|0$
  • 非正整数:^-[1-9]\d*|0$ 或 ^((-\d+)|(0+))$
  • 非负浮点数:^\d+(.\d+)?$ 或 ^[1-9]\d*.\d*|0.\d*[1-9]\d*|0?.0+|0$
  • 非正浮点数:^((-\d+(.\d+)?)|(0+(.0+)?))$ 或 ^(-([1-9]\d*.\d*|0.\d*[1-9]\d*))|0?.0+|0$
  • 正浮点数:^[1-9]\d*.\d*|0.\d*[1-9]\d*$ 或 ^(([0-9]+.[0-9][1-9][0-9])|([0-9][1-9][0-9].[0-9]+)|([0-9][1-9][0-9]))$
  • 负浮点数:^-([1-9]\d*.\d*|0.\d*[1-9]\d*)$ 或 ^(-(([0-9]+.[0-9][1-9][0-9])|([0-9][1-9][0-9].[0-9]+)|([0-9][1-9][0-9])))$
  • 浮点数:^(-?\d+)(.\d+)?$ 或 ^-?([1-9]\d*.\d*|0.\d*[1-9]\d*|0?.0+|0)$

5.2、校验字符的表达式

  • 汉字:^[\u4e00-\u9fa5]{0,}$
  • 英文和数字:^[A-Za-z0-9]+$ 或 ^[A-Za-z0-9]{4,40}$
  • 长度为3-20的所有字符:^.{3,20}$
  • 由26个英文字母组成的字符串:^[A-Za-z]+$
  • 由26个大写英文字母组成的字符串:^[A-Z]+$
  • 由26个小写英文字母组成的字符串:^[a-z]+$
  • 由数字和26个英文字母组成的字符串:^[A-Za-z0-9]+$
  • 由数字、26个英文字母或者下划线组成的字符串:^\w+$ 或 ^\w{3,20}$
  • 中文、英文、数字包括下划线:^[\u4E00-\u9FA5A-Za-z0-9_]+$
  • 中文、英文、数字但不包括下划线等符号:^[\u4E00-\u9FA5A-Za-z0-9]+$ 或 ^[\u4E00-\u9FA5A-Za-z0-9]{2,20}$
  • 可以输入含有"^%&',;=?$\"等字符:[^%&',;=?$\x22]+
  • 禁止输入含有~的字符:[^~]+

参考资料:

  • 正则表达式
  • 正则表达式(菜鸟教程)

你可能感兴趣的:(正则表达式,android)