java-正则表达式
正则表达式
概念:正则表达式是定义了字符串的模式,用来匹配,搜索,编辑或者处理文本
一 常见字符
1 每个字符串其实都是个正则表达式
如 hello正则表达式就匹配“hello”或者以“hello”开头的任一字符串如“hellokitty”
2 英文句号“." : 匹配任意字符
如表达式 s.n 匹配 sun,son,s@n 等
3 方括号符号‘[ ]’:可以在方括号内指定一些字符,只要方括号内的字符才会参与匹配
如表达式 a[bcde]w 可以匹配 abw,acw,adw,aew,但abcw不能匹配,因为中括号内内容只能匹配单个字符
如表达式6[1-9]8 可以匹配 618,628等,中间为1至9之间任一数字
4 “或”符号
如例子3中你想匹配 abcw,那就得用“或”符号,“|”操作符的基本意义就是“或”运算
如 表达式a(b|c|d|e|bc)w就可以匹配abcw了
5 表示匹配次数的符号
* 0次或者多次
+ 1次或者多次
?0次或者1次
{n} n次
{n,m} 从n次到m次
如国内手机号码可能为86-15241345454 或者8615241345454 或者15241345454 格式
简单表达式为(86|86-)?[0-9]{11}
6“否”符号
如方括号内带^符号如[^ab],则表示不匹配a,b中的任一个字符,其余字符都能匹配。如可以匹配c
7 不可见字符 \s
匹配包括空格,制表符,换页符等,等价于[ \f\n\r\t\v]
8 快捷符号
为简便起见,你可以使用一些为常见正则表达式创建的快捷符号。如下所示:
\d [0-9] 0至9任一字符
\D [^0-9] 非0至9任一字符
\w [A-Z0-9] A至Z或者0至9任一字符
\W [^A-Z0-9]非A至Z而且非0至9的任一字符
\s [ \t\n\r\f\v] 空格符,制表符,换行符,回车符,换页符,垂直制表符
\S [^ \t\n\r\f\v] 非(空格符&制表符&换行符&回车符&换页符&垂直制表符)
9 转义符
\ 相当于编程语言中转义符,如\\n 匹配"\n"
10 字符串开始结束
^匹配输入字符串的开始位置
$匹配输入字符串的结束位置
11 单词边界
\b 匹配一个单词的边界,也就是单词和空格见的位置,例如 er\b 可以匹配 ever 但能匹配 evers ,因为\b必须匹配单词边界
\B 匹配非单词边界,例如 er\B 可以匹配evers,不能匹配ever
二 常用正则表达式例子
//带区号的固定电话
^[0][1-9]{2,3}-[0-9]{5,10}$
//没有区号的固定电话
^[1-9]{1}[0-9]{5,8}$
//手机号码
^(\\+{0,1}86){0,1}[1][0-9]{10}$
//一个或多个汉字
^[\u0391-\uFFE5]+$
//邮政编码
^[1-9]\d{5}$
//QQ号码
^[1-9]\d{4,10}$
//URL
^((http|https)://)?([\w-]+\.)+[\w-]+(/[\w-./?%&=]*)?$
邮箱
^([a-z0-9A-Z]+[-|\\.]?)+[a-z0-9A-Z]@([a-z0-9A-Z]+(-[a-z0-9A-Z]+)?\\.)+[a-zA-Z]{2,}$
浙公网安备 33010602011771号