学习笔记——正则表达式

JavaEye挂了。。设计模式的学习有些停滞,正好把想看的正则表达式看了

正则表达式主要作用是用来描述字符串对象的,还可以用来匹配字符串(我感觉最多的就是各种验证,查找替换中的实际应用)

 

正则表达式语法:

     字符与字符串

直接用字母和数字 /a/ /b/ /abc/ /123/

还有反斜杠加特殊字符 \n \t \( \o等等

     字符类

[…] 可以匹配一个字符 [abc] [a-z] [A-Z]等等 只能匹配一个

[^…] 除去特定字符 [^abc] [^a-z]等等

特别的有

. 除换行,终止符之外的所有字符

\w 所有ASCII单字字符 (注意小写 大写是除所有外 相当于^

\d 数字

\s 空白符

     重复类 限定符

指定字符要重复的次数

{n} {n,m} {n,} 相当于一个范围 重复n n-m 至少n

特别的

? 01 相当于{0,1}

+ 至少1 相当于{1,}

0或多次 {0,}

     选择符

 abc|asd|qaz 注意从左到右只会匹配第一个

     定位符

^ 表示开头

$ 表示结尾

还有一些\b \B (?=p) (?!p)

     分组

(…) (?...) 将一个字符串看做整体分组 后者不记忆与该组合所匹配的内容 其他无异 配合限定符使用

     引用

\n 表示第n个分组 比如\1 \2

/[‘”][^’”]*[‘”]/表示一个字符串 但是它包含了开头结尾或者开头结尾的

/[‘”][^’”]*\1/则解决了该问题

所以引用不是单纯复制匹配模式,而是重复内容

     标志

i 不区分大小写

g 全局模式 不是找到一个就结束

m 多行匹配模式

用得比较多的ig 用法是加在表达式后 /abc/i  /abc/gi /abc$/m

 

以上都是语法,下面记录点例子

●邮编:

首先都是数字 可以用\d

然后是6 所以是\d{6} 但是这样也会同123456789这些大于6位的匹配

所以加上限定符^\d{6}$

     身份证号码(18位):

17位是数字 \d{17}

1位是数字或 [\d|X]

同样加上限定符^\d{17}[\d|X]$

     验证Email地址:

用户名部分 由字母,数字,下划线等组成 [\w-_]+

@部分 @

域名部分 可以用.作为分隔符,除最后一部分,都由字母,下划线等组成

[\w-]+\.表示有.的部分 [\w-]+表示只含字母的部分

完整的就是([\w-]+\.)+[\w-]+

最终 Email验证的正则表达式 ^[w-_]+@([\w-]+\.)+[\w-]+$

 

补充上来一个常用正则表达式

http://flytosea.iteye.com/blog/763908

 

韩神推荐的正则教程 http://deerchao.net/tutorials/regex/regex.htm#lookaround

 

你可能感兴趣的:(正则)