首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 其他相关 >

学习札记——正则表达式

2012-11-09 
学习笔记——正则表达式JavaEye挂了。。设计模式的学习有些停滞,正好把想看的正则表达式看了正则表达式主要作

学习笔记——正则表达式

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次

特别的

? 0或1次?相当于{0,1}

+?至少1次?相当于{1,}

0或多次?{0,}

●?????选择符

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

●?????定位符

^?表示开头

$?表示结尾

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

●?????分组

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

●?????引用

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

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

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

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

●?????标志

i?不区分大小写

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

m?多行匹配模式

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

?

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

●邮编:

首先都是数字?可以用\d

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

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

●?????身份证号码(18位):

前17位是数字?\d{17}

后1位是数字或X??[\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

?

热点排行