常用的正则表达式
匹配中文字符的正则表达式: [/u4e00-/u9fa5]
匹配双字节字符(包括汉字在内):[^/x00-/xff]
匹配空行的正则表达式:/n[/s| ]*/r
匹配HTML标记的正则表达式:/<(.*)>.*<///1>|<(.*) //>/
匹配首尾空格的正则表达式:(^/s*)|(/s*$)
匹配Email地址的正则表达式:/w+([-+.]/w+)*@/w+([-.]/w+)*/./w+([-.]/w+)*
匹配网址URL的正则表达式:http://([/w-]+/.)+[/w-]+(/[/w- ./?%&=]*)?
3.1.2非打印字符
非打印字符也是普通字符,单独列出来便于参考。
非打印字符参考(有错大家矫正,JS手册都有)
/cx
匹配由x指明的控制字符。例如, /cM 匹配一个 Control-M 或回车符。x 的值必须为 A-Z 或 a-z 之一。否则,将 c 视为一个原义的 'c' 字符。
/f
匹配一个换页符。等价于 /x0c 和 /cL。
/n
匹配一个换行符。等价于 /x0a 和 /cJ。
/r
匹配一个回车符。等价于 /x0d 和 /cM。
/s
匹配任何空白字符,包括空格、制表符、换页符等等。等价于 [ /f/n/r/t/v]。
/S
匹配任何非空白字符。等价于 [^ /f/n/r/t/v]。
/t
匹配一个制表符。等价于 /x09 和 /cI。
/v
匹配一个垂直制表符。等价于 /x0b 和 /cK。
Regex中可以使用非打印字符。/t会匹配一个tab字符(ASC||),/r 会匹配一个回车(0x0D),/n 会匹配一个换行符(0x0A)。应该注意的是:Windows使用/r/n表示一行的结束,而UNIX使用/n 。
同样,我们可以在Regex中使用16进制的ASCⅡ码或者ANSI标准码。在拉丁语中,版权符号的代码是0xA9,所以我们也可以这样来匹配版权符号 /xA9 。另外一个匹配tab的写法是:/x09 。但是注意,第一位的“0”必须去掉。
特殊字符
特殊字符也叫做元字符,保留字符(Metacharactor),在Regex中表示特殊的意义,大部分的意思在不同的上下文中的意义是不同的,这里只列出最普遍的意义。
特殊字符共有11个:
$
匹配输入字符串的结尾位置。如果设置了 RegExp 对象的 Multiline 属性,则 $ 也匹配 '/n' 或 '/r'。要匹配 $ 字符本身,请使用 /$。
( )
标记一个子表达式的开始和结束位置。子表达式可以获取供以后使用。要匹配这些字符,请使用 /( 和 /)。
*
匹配前面的子表达式零次或多次。要匹配 * 字符,请使用 /*。
+
匹配前面的子表达式一次或多次。要匹配 + 字符,请使用 /+。
.
匹配除换行符 /n之外的任何单字符。要匹配 .,请使用 /。
[
标记一个中括号表达式的开始。要匹配 [,请使用 /[。
?
匹配前面的子表达式零次或一次,或指明一个非贪婪限定符。要匹配 ? 字符,请使用 /?。
/
将下一个字符标记为或特殊字符、或原义字符、或反向引用、或八进制转义符。例如, 'n' 匹配字符 'n'。'/n' 匹配换行符。序列 '//' 匹配 "/",而 '/(' 则匹配 "("。
^
匹配输入字符串的开始位置,除非在方括号表达式中使用,此时它表示不接受该字符集合。要匹配 ^ 字符本身,请使用 /^。
{
标记限定符表达式的开始。要匹配 {,请使用 /{。
|
指明两项之间的一个选择。要匹配 |,请使用 /|。
在元字符前加 / 转义符,可以把特殊字符当作普通字符来使用。
比如:如要要匹配 1+1=2 ,正确的正则表达式应该为1/+1=2。否则, + 会被当作特殊字符对待。
除了特殊字符,所有的其他字符都不应该加 / 。因为 / 也是一个特殊字符。/ 和普通字符组合在一起也可以创造一种特殊的意义。比如 /d 表示匹配所有的数字。
作为程序员,单引号和双引号不是特殊字符会也许让我们感到很惊讶。但这是正确的。因为我们在编程的时候,编程语言会知道引号之间的哪些字符表示特殊意义,编译器在把字符串x传递给regex解释引擎之前,会把它们处理成regex。比如,在C#中,如果我们要匹配 1/+1=2 ,在程序中我们要这样写: “1//+1=2” ,C#编译器会把 “//” ,处理为一个“/” 。同样,如果要匹配 C:/Temp ,首先,正则表达式要这样写 C://Temp,然后在程序中我们应该这样写:“ C:temp”。
<!---->