一、如何用普通字符和元字符来匹配单个字符
. 可以匹配任何字符
\ 用来对字符进行转义
二、匹配一组字符
与可以匹配任意字符的单个字符 .字符不同,字符集合只能匹配特定的字符和字符区间。
元字符^:求非
[Na] 字符集 N或a
[0-9] 字符区间 0-9之间的数字
[a-z] 匹配从a-z之间的所有小写字母
[A-Z] 匹配从A-Z之间的所有大写字母
[A-Za-z0-9] 可以匹配任何一个字母(无论大小写)还有数字
[^0-9] 匹配的是任何不是数字的字符
三、使用元字符去匹配特定的字符或字符类型
[\b] 回退(并删除)一个字符
\f 换页符
\n 换行符
\r 回车符
\t 制表符
\v 垂直制表符
四、类元字符
• 数字元字符
/d 任何一个数字字符,等价于[0-9]
/D 任何一个非数字字符,等价于[^0-9]
• 字母数字元字符
/w 任何一个字母数字字符(大小写均可)和下划线字符,等价于[a-zA-Z0-9_]
/W 任何一个非字母数字或下划线字符
• 空白字符与非空白字符
/s 匹配任何一个空白字符,等价于[/f/n/r/t/v]
/S 匹配任何一个非空白字符,等价于[^/f/n/r/t/v]
六、匹配十六进制或八进制数值
十六进制数要给出前缀\X
\x0A对应ASCII字符10(换行符),其效果等价于\m
八进制数要给出前缀\0
\011对应SACII字符9(制表符),其效果等价于\t
\cZ将匹配Ctrl-Z
七、重复匹配
• 匹配一个或多个字符:
想要匹配同一个字符(或字符集合)的多次重复,只要简单的给这个字符(或字符集合)加上一个+作为后缀就可以了。
[0-9]+ 将匹配一个或多个连续的数字;
+ 匹配一个或多个字符
• 匹配零个或多个字符
* 匹配零个或多个字符
匹配零个或一个字符:
?只能匹配一个字符(或字符集)的零次或一次出现
如https既可以匹配http,也可以匹配https
八、匹配重复次数:
重复次数要用{和}字符来给出----把数值写在它们之间
• 为重复匹配次数设定一个精确的值
如:匹配GRB值
用来匹配的文本:<BODY BGCOLOR="<span style="color:#ff9900;">#336633</span>" TEXT="<span style="color:#ff9900;">#FFFFFFF</span>" MARGINWIDTH="0" TOPMARGIN="0"
LEFTMARGIN ="0">
正则表达式:#[[:xdigit:]]{6}或者#[0-9a-fA-F]{6}
[:xdigit:] 用来匹配一个十六进制数
• 为重复匹配次数设置一个区间
如:匹配日期格式是否正确
用来匹配的文本:
<span style="color:#ff9900;">4/8/03
10.6.2004</span>
2/2/2
<span style="color:#ff9900;">01.01.01</span>
正则表达式:\d{1,2}[.\/]\d{1,2}[.\/]\d{2,4}
• 匹配“至少重复多少次”
给出一个最小的重复次数(但不给出最大值)
{3,} 必须重复三次或更多次
如 :把所有大于或等于100美元的金额找出来
用来匹配的文本:
<span style="color:#ff9900;">1001:$496.80
1002:$1290.69</span>
1003:$26.43
<span style="color:#ff9900;">1004:$613.42</span>
1005:$7.61
<span style="color:#ff9900;">1006:$414.90</span>
1007:$25.00
正则表达式:\d+:\$\d{3,}\.\d{2}
八、位置匹配
位置匹配用来解决在什么地方进行字符串匹配操作的问题。
• 边界
(1)、单词边界(单词的开头、单词的结束、整个单词):/b 用来匹配一个单词的开始或结尾
如果你想要匹配一个完整的单词,那么你就要在你要匹配的文本前后都加上/b限定符
(2)、字符串边界:用来定义字符串边界的元字符有两个,一个是用来定义字符串开头的 ^,另一个是用来定义字符串结尾的$;
如:检查xml文档 ^
用来匹配的文本:
<span style="color:#ff9900;"> <?xml version="1.0" encoding="utf-8" ?></span>
<msd1:definitions targetNamespace="http://tips.cf"
xmlns:impl="http://tips.cf" xmlns:inif="http://tips.cf"
xmlns:apachesoap="http://xml.apache.org/xml-soap"
正则表达式:^\s*<\?xml.*\?>
(3)、分行匹配模式:用来启用分行匹配模式的(?m)记号就是一个能够改变其他元字符行为的元字符序列。如果与(?m)配合使用,^和$还将匹配在一个换行符处开头或结尾的字符串(此时,换行符被视作一个字符串分隔符)。
如:找出代码中的全部注释内容
要匹配的文本:
<script>
function doSpellCheck(form,field){
<span style="color:#ff6600;">//make sure not empty</span>
if(field.value==" ")
return false;
}
<span style="color:#ff9900;">//init</span>
...............
<span style="color:#ff9900;">//Done</span>
</script>
正则表达式:(?m)^\s*//.*$