笔记 正则表达式RE -00 basic [need update]

来源:互联网 发布:androis中的js调试 编辑:程序博客网 时间:2024/05/17 09:43
regular expression: a pattern that strings can match 
正则表达式就是匹配 目标字符串是一个subject,希望匹配的内容是一个pattern,利用正则,找出subject里匹配pattern的字符串

//eg: '*.txt' matches filename ending in '.txt'
//warning: notation is ugly 

正则表达式基本语法:界定符,原子,量词,边界控制,模式单元 

- 界定符:

表示一个RE的开始和结束/[0-9]/, 或者#[0-9]#, {[0-9]}(一般不用"{}"作为界定符)

regexpal 正则表达式实时调试工具 


- 原子: 

正则表达式中的最小匹配单位 【可以是Unicode编码表】分为可见原子和不可见原子 

可见原子:Unicode编码表中用键盘输出后肉眼可见的字符 
包含标点,英文字母数字,汉子,日文,阿拉伯文等其他语言,数理化公式符号,其他可见字符等 

不可见原子: Unicode编码表中用键盘输出后肉眼不可见的字符 
如:\n, \r, \t, 空格 以及其他不可见符号 
可以利用regexpal来匹配调试,在匹配前,为了避免由于编码格式不同可能产生的问题,我们先用Unicode转换工具将pattern先转为Unicode再进行匹配 
如果遇到re运算符(如“$”), 就在字符前面加上"\"进行转义 


元字符

- 原子的筛选方式:“|” 匹配两个或更多;“[]”匹配"[]"内任意一个原子;“[^]”匹配方括号内原子之外的任意字符 
 [0-9a-zA-Z] 即匹配0-9或a-z或A-Z中任意字符
 [^asdfe] 匹配所有非asdfe的字符 
 [Aa]pple,匹配apple或Apple 

- 原子的集合 
“.”匹配除换行符之外的任意字符,即[^\n]
“\d”匹配任意一个十进制数字,即[0-9] 
“\D”匹配任意一个非十进制数字,即[^0-9] 
“\s”匹配一个不可见原子,即[\f\n\r\t\v]
“\S”匹配一个可见原子,即[^\f\n\r\t\v]
“\w”匹配一个数字,字母或下划线,即[ [0-9a-zA-Z_]
“\W”匹配一个非数字,字母或下划线,即[ ^0-9a-zA-Z_]


- 量词 

[查找在目标字符串中某一个原子连续出现多少次] 
{n} 恰好n次 
{n,} >=n次 
{n,m} n<=?<=m次 
"*" 匹配0次,1次或者多次,即{0}
"+" 匹配1次或者多次,即{1}
"?" 匹配0次,或者1次,即{0,1}

- 边界控制与模式单元 
^匹配字符串开始位置  
$ 匹配字符串结尾位置 
() 匹配其中对整体为一个原子 


修正模式

- 贪婪匹配(匹配结果存在歧义时取其长,通常默认是贪婪匹配)与懒惰匹配 (匹配结果存在歧义时取其短,在pattern后面加一个大写U)
- i - 忽略英文字母大小写
- x 忽略空白 
- s 让元字符"."匹配包括换行符在内所有字符 
- e 


补充举例

.+ 非空:可以利用这个来判断用户是否已经输入内容,如果没有,可以提示用户表单是必填内容,否则无法提交。 
\d+\.\d{2}$ 匹配两位小数的数字 
1(3|4|5|7|8)\d{9}$ 匹配手机号
^\w+(\.\w+)*@\w+(\.\w+)+$ e-mail 地址验证匹配 
^(https?://)?(\w+\.)+[a-zA-Z]+$ 匹配顶级域名链接 


Ref: http://www.imooc.com/learn/350 
0 0
原创粉丝点击