正则表达式(regular expression)描述了一种字符串匹配的模式(pattern),可以用来检查一个串是否含有某种子串、将匹配的子串替换或者从某个串中取出符合某个条件的子串等。
构造正则表达式的方法和创建数学表达式的方法一样。也就是用多种元字符与运算符可以将小的表达式结合在一起来创建更大的表达式。
正则表达式的组件可以是单个的字符、字符集合、字符范围、字符间的选择或者所有这些组件的任意组合。
正则表达式是由普通字符(例如字符 a 到 z)以及特殊字符(称为"元字符")组成的文字模式。模式描述在搜索文本时要匹配的一个或多个字符串。
正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配。
一、数字
数字 ^[0-9]*$
n位的数字 ^\d{n}$
至少n位的数字 ^\d{n,}$
m-n位的数字 ^\d{m,n}$
零和非零开头的数字 ^(0\|1-9*)$
非零开头的最多带两位小数的数字 ^(1-9*)+(.[0-9]{1,2})?$
带1-2位小数的正数或负数 ^(-)?\d+(.\d{1,2})$
正数、负数、和小数 ^(-\|+)?\d+(.\d+)?$
有两位小数的正实数 ^[0-9]+(.[0-9]{2})?$
非负整数 ^\d+ 或 ^[1-9]\d\*\|0
非正整数 ^-[1-9]\d*\|0$
浮点数 ^(-?\d+)(.\d+)?$
正浮点数 ^[1-9]\d*.\d\|0.\d[1-9]\d*$
负浮点数 ^-([1-9]\d*.\d\|0.\d[1-9]\d*)$
二、字符
汉字 ^[\u4e00-\u9fa5]{0,}$
大写英文 ^[A-Z]+$
小写英文 ^[a-z]+$
英文和数字 ^[A-Za-z0-9]+$
英文、数字和下划线 ^\w+$
中文、英文、数字 ^[\u4E00-\u9FA5A-Za-z0-9]+$
中文、英文、数字和下划线 ^[\u4E00-\u9FA5A-Za-z0-9_]+$
双字节字符(包括汉字在内) [^\x00-\xff]
三、特殊需求表达式
Email ^[a-zA-Z0-9-]+@[a-zA-Z0-9-]+(.[a-zA-Z0-9_-]+)+$
身份证号码 ^[1-9]\d{5}(18\|19\|20)\d{2}((0[1-9])\|(1[0-2]))((0-2)\|10\|20\|30\|31)\d{3}[0-9Xx]$
手机号码 ^1(3\|4\|5\|6\|7\|8\|9)\d{9}$
固定电话(XXX-XXXXXXX XXXX-XXXXXXXX) ((\d{3,4})\|\d{3,4}-\|\s)?\d{8}
域名 ^((http:\/\/)\|(https:\/\/))?(a-zA-Z0-9?.)+[a-zA-Z]{2,6}(\/)
IPv4 ((?:(?:25[0-5]\|2[0-4]\d\|[01]?\d?\d).){3}(?:25[0-5]\|2[0-4]\d\|[01]?\d?\d))
html标签 <(\S*?)>>.?\|<.*? />
日期 ^\d{4}-\d{1,2}-\d{1,2}
密码(以字母开头,长度在6~18之间,只能包含字母、数字和下划线) ^[a-zA-Z]\w{5,17}$
密码(必须包含大小写字母和数字的组合,不能使用特殊字符,长度在 8-10 之间) ^(?=.*\d)(?=.[a-z])(?=.[A-Z])[a-zA-Z0-9]{8,10}$
密码(必须包含大小写字母和数字的组合,可以使用特殊字符,长度在8-10之间) ^(?=.*\d)(?=.[a-z])(?=.[A-Z]).{8,10}$