“正则表达式”(Regular Expression)就是一个字符构成的串,它定义了一个用来搜索匹配字符串的模式。
- 句点符号 .
假如你现在想写一个3个字符的单词必须是以z开头n结尾。那么你可以写z.c那么他匹配"zyc","z*c"还包括空格
- 正则表达式z.c
- 匹配:zyc,z*c,z c,z&c等
- 方括号[ ]
假如正则表达式z[asdy]c,那么他只匹配zac,zsc,zdc,zyc,因为方括号内只能匹配单个的字符
- 正则表达式z[asdy]c
- 匹配:zac,zsc,zdc,zyc
- "或"符号 |
假如你现在想匹配zac,zsc,zyyc那么你的正则表达式应该这样写z(a|s|yy)c,因为方括号只能匹配单个字符,这里只能用园括号
java 代码
- 正则表达式:z(a|s|yy)c
- 匹配:zac.zsc.zyyc
- 表示匹配次数的符号
符号 | 次数 |
* | 0次或者多次 |
+ | 1次或者多次 |
? | 0次或者1次 |
{n} | n次 |
{n,m} | n到m此 |
那么看下列例子:
[0-9]{3}\-[0-9]{2}\-[0-9]{4}
上面的这个正则表达式的意思前3位必须是0-9的数字然后是“-”做连接符号,0-9的数字出现2次然后是“-”在然后就是0-9的数字出现4次那么他匹配的是123-12-1234
[0-9]{3}\-?[0-9]{2}\-?[0-9]{4}
上面的这个表达式在第一个表达式的基础上改进的,就不做过多的解释,\-?的意思是"-"连接符可以出现0-1次那么他匹配123-12-1234,也匹配123121234
[0-9]{4}[a-zA-Z]{2}
在看上述表达式是前4位必须是0-9的数字,后2位必须是a-z的字母或者是A-Z的字母,那么它匹配1234aa,也匹配1234AA
-
"否"字符 ^:表示不想匹配的字符[^z]表示非z的字符
-
常用的符号
-
符号 等价的正则表达式 \d [0-9] \D [^0-9] \w [0-9A-Z] \W [^0-9A-Z] \s [\t\n\r\f] \S [^\t\n\r\f] -
^\d+$ //匹配非负整数(正整数 + 0) ^[0-9]*[1-9][0-9]*$ //匹配正整数 ^((-\d+)|(0+))$ //匹配非正整数(负整数 + 0) ^-[0-9]*[1-9][0-9]*$ //匹配负整数 ^-?\d+$ //匹配整数 ^\d+(\.\d+)?$ //匹配非负浮点数(正浮点数 + 0) ^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$ //匹配正浮点数 ^((-\d+(\.\d+)?)|(0+(\.0+)?))$ //匹配非正浮点数(负浮点数 + 0) ^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$ //匹配负浮点数 ^(-?\d+)(\.\d+)?$ //匹配浮点数 ^[A-Za-z]+$ //匹配由26个英文字母组成的字符串 ^[A-Z]+$ //匹配由26个英文字母的大写组成的字符串 ^[a-z]+$ //匹配由26个英文字母的小写组成的字符串 ^[A-Za-z0-9]+$ //匹配由数字和26个英文字母组成的字符串 ^\w+$ //匹配由数字、26个英文字母或者下划线组成的字符串 ^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$ //匹配email地址 ^[a-zA-z]+://匹配(\w+(-\w+)*)(\.(\w+(-\w+)*))*(\?\S*)?$ //匹配url