正则

来源:互联网 发布:2016嘉兴菜鸟网络招聘 编辑:程序博客网 时间:2024/06/02 02:37
> BCD原则:
B
在正则表达式中有3种类型的括号
方括号 “[“和花括号“{“ 。
方括号"["内是需要匹配的字符,花括号"{"内是指定匹配字符的数量。
圆括号“(“ 则是用来分组的。
C
插入符号 “^” 表示正则式的开始。
D
美元符号“$” 表示正则式的结束。
- matches和lookingAt()方法
  > matches和lookingAt方法都用来尝试匹配一个输入序列模式。它们的不同是matcher要求整个序列都匹配,而lookingAt不要求。
lookingAt方法虽然不需要整句都匹配,但是需要从第一个字符开始匹配。
- replaceFirst和replaceAll
  >这两个方法都是用来替换匹配正则表达式的文本。不同的是,replaceFirst替换首次匹配,而replaceAll替换所有匹配

- 例子
`"\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*"`
分析:
> `\\w`表示匹配任何字类字符,包括下划线。与"[A-Za-z0-9_]"等效

> `+`表示一次或多次匹配匹配前面的字符或子表达式

> `([-+.]\\w+))*`
`*`表示零次或多次匹配前面的字符或子表达式
`([-+.]\\w+)`
其中`[-+.]`表示,`\w+`表示以字类字符结尾

> `@` 匹配一个@

> `\\w+`表示@之后继续是字类字符零次或多次匹配

> `([-.]\\w+)*`
`*`表示零次或多次匹配
 `([-.]\\w+)`
`[-.]`匹配
`\\w+` 匹配任何字类字符

>` \\.`匹配一个.

>`\\w+` 匹配任何字类字符

> `([-.]\w+)*`
`*` 表示零次或多次匹配
`([-.]\\w+)`
`[-.]` 匹配
`\\w+` 匹配任何字类字符

> 所以这是一个邮箱的匹配正则

例子2
`"(\\d{2,4}-0\\d{2,3}-\\d{7,8}(-\\d{1,4})?)|((0\\d{2,3}-?|\\(0\\d{2,3}\\))?\\d{7,8}(-?\\d{1,4})?)"`

> 看不懂,不像是手机号的正则,但是测试通过了,囧

分析:
首先第一个|那里是表示匹配前面部分或者后面部分,所以前面和后面地位同等。后面的那个|是后面那部分的内部问题

> (\\d{2,4}-0\\d{2,3}-\\d{7,8}(-\\d{1,4})?)

例子3
`^(([0-9])|([0-1][0-9])|([0-2][0-5]))$`或者`^(([0-9])|([1][0-9])|([2][0-5]))$`
>匹配0-25的数字,第二种写法更明朗一些

最近工作中用到的两个正则

1.密码(6到21位,同时包含字母数字,也只可以是字母和数字)

^(?![^a-zA-Z]+$)(?![^\\d]+$)[a-zA-Z\\d]{6,21}$

2.用户名(5到24位,必须有字母,可以有数字下划线减号)

^(?![^a-zA-Z]+$)[\\w-]{5,24}$