background image

对象可以是"app"、"acp"、"accp"等在"a"后面出现零个或者多个"c"的字符串。"*"相当
于"{0,}"。
  问号:"?"字符用来匹配元字符前的字符出现零次或者 1 次。例如"/ac?/"表示匹配的对
象可以是"a"、"acp"、"acwp"这样在"a"后面出现零个或者 1 个"c"的字符串。"?"在正则表达式
中还有一个非常重要的作用,即"贪婪模式"。
  还有两个很重要的特殊字符就是"[ ]"。他们可以匹配"[]"之中出现过的字符,比如"/
[az]/"可以匹配单个字符"a"或者"z";如果把上面的表达式改成这样"/[a-z]/",就可以匹配
任何单个小写字母,比如"a"、"b"等等。
  如果在"[]"中出现了"^",代表本表达式不匹配"[]"内出现的字符,比如"/[^a-z]/"不匹
配任何小写字母!并且正则表达式给出了几种"[]"的默认值:
[:alpha:]:匹配任何字母
[:alnum:]:匹配任何字母和数字
[:digit:]:匹配任何数字
[:space:]:匹配空格符
[:upper:]:匹配任何大写字母
[:lower:]:匹配任何小写字母
[:punct:]:匹配任何标点符号
[:xdigit:]:匹配任何 16 进制数字
  另外下面这些特殊字符在转义符号""转义后代表的含义如下:
s:匹配单个的空格符
S:用于匹配除单个空格符之外的所有字符。
d:用于匹配从 0 到 9 的数字,相当于"/[0-9]/"。
w:用于匹配字母,数字或下划线字符,相当于"/[a-zA-Z0-9_]/"。
W:用于匹配所有与 w 不匹配的字符,相当于"/[^a-zA-Z0-9_]/"。
D:用于匹配任何非 10 进制的数字字符。
.:用于匹配除换行符之外的所有字符,如果经过修饰符"s"的修饰,"."可以代表任意字符。

  利用上面的特殊字符可以很方便的表达一些比较繁琐的模式匹配。例如"/d0000/"利用
上面的正则表达式可以匹配万以上,十万一下的整数字符串。
定位字符:
  定位字符是正则表达式中又一类非常重要的字符,它的主要作用是用于对字符在匹
配对象中的位置进行描述。
^:表示匹配的模式出现在匹配对象的开头(和在"[]"里面不同)
$:表示匹配的模式出现在匹配对象的末尾
空格:表示匹配的模式出现在开始和结尾的两个边界之一
"/^he/":可以匹配以"he"字符开头的字符串,比如 hello、height 等等;
"/he$/":可以匹配以"he"字符结尾的字符串即 she 等;
"/ he/":空格开头,和^的作用一样,匹配以 he 开头的字符串;
"/he /":空格结束,和$的作用一样,匹配以 he 结尾的字符串;
"/^he$/":表示只和字符串"he"匹配。
正则表达式除了可以用户匹配,还可以用括号"()"来记录需要的信息,储存起来,给后面
的表达式读取。比如:
/^([a-zA-Z0-9_-]+)@([a-zA-Z0-9_-]+)(.[a-zA-Z0-9_-])$/
就是记录邮件地址的用户名,和邮件地址的服务器地址(形式为

username@server.com

§