Java 正则表达式
首先,正则表达式定义了字符串的模式,用于匹配输入的字符串是否与我们想要的格式相同。
语法:
基本语法可以看:
官方语法
但是我想把用过的 总结一下
对于单个符号:
- 英文句点
.
符号:匹配单个任意字符; 表达式t.o
可以匹配:tno
,t#o
,teo
等等。不可以匹配:tnno
,to
,Tno
,t哈o
等。 - 中括号
[]
:只有方括号里面指定的字符才参与匹配,也只能匹配单个字符;表达式:t[abcd]n
只可以匹配:tan
,tbn
,tcn
,tdn
。不可以匹配:thn
,tabn
,tn
等 |
符号。“或”,可以匹配指定的字符,但是也只能选择其中一项进行匹配;表达式:t(a|b|c|dd)n
只可以匹配:tan
,tbn
,tcn
,tddn
。不可以匹配taan
,tn
,tabcn
等。- 表示匹配次数的符号
符号 | 次数 |
---|---|
* | 0次 或 多次 |
+ | 1次 或 多次 |
? | 0次 或 一次 |
{n} | 恰好n次 |
{n,m} | 从n次到m次 |
表达式:[0—9]{ 3 } \— [0-9]{ 2 } \— [0-9]{ 3 }
的匹配格式为:999—99—999
因为—符号在正则表达式中有特殊的含义,它表示一个范围,所以在前面加转义字符\
。
^
符号:表示否,如果用在方括号内,^
表示不想匹配的字符;表达式:[^x]
第一个字符不能是 x;或者^ 定义了以什么开始\S
符号:非空字符\s
符号:空字符,只可以匹配一个空格、制表符、回车符、换页符,不可以匹配自己输入的多个空格。\r
符号:空格符,与\n
、\tab
相同
对于快捷符号:
1、\d
表示[0—9]
2、\D
表示[^0—9]
3、\w
表示[0—9A—Z_a—z]
4、\W
表示[^0—9A—Z_a—z]
5、\s
表示[\t\n\r\f]
6、\S
表示[^\t\n\r\f]
“ ^
”:匹配输入字符串开始的位置。如果设置了 RegExp 对象的 Multiline 属性,^
还会与”\n
”或”\r
”之后的位置匹配(即匹配每一行的开始);
“ $
” :匹配输入字符串结尾的位置。如果设置了 RegExp 对象的 Multiline 属性,$
还会与”\n
”或”\r
”之前的位置匹配(即匹配每一行的结束)。
常用正则表达式:
^\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/^(d{2}|d{4})-((0([1-9]{1}))|(1[1|2]))-(([0-2]([1-9]{1}))|(3[0|1]))$/
:年-月-日/^((0([1-9]{1}))|(1[1|2]))/(([0-2]([1-9]{1}))|(3[0|1]))/(d{2}|d{4})$/
:月/日/年^([w-.]+)@(([[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.)|(([w-]+.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(]?)$
:Emil/^((\+?[0-9]{2,4}\-[0-9]{3,4}\-)|([0-9]{3,4}\-))?([0-9]{7,8})(\-[0-9]+)?$/
:电话号码^(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5])$
:IP地址- 匹配中文字符的正则表达式:
[\u4e00-\u9fa5]
- 匹配双字节字符(包括汉字在内):
[^\x00-\xff]
- 匹配空行的正则表达式:
\n[\s| ]*\r
- 匹配HTML标记的正则表达式:
/<(.*)>.*<\/\1>|<(.*) \/>/
- 匹配首尾空格的正则表达式:
(^\s*)|(\s*$)
- 匹配Email地址的正则表达式:
\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*
- 匹配网址URL的正则表达式:
^[a-zA-z]+://(\\w+(-\\w+)*)(\\.(\\w+(-\\w+)*))*(\\?\\S*)?$
- 匹配帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线):
^[a-zA-Z][a-zA-Z0-9_]{4,15}$
- 匹配国内电话号码:
(\d{3}-|\d{4}-)?(\d{8}|\d{7})?
- 匹配腾讯QQ号:
^[1-9]*[1-9][0-9]*$
- sql语句:
^(select|drop|delete|create|update|insert).*$