操作符用途
.(句点) 匹配所有单个字符 |
^(脱字符号)匹配出现在行或字符串开头的空字符串 |
$(美元符号)匹配出现在行尾的空字符串 |
A 匹配大写字母 A |
a匹配小写字母 a |
\d匹配所有一位数字 |
\D 匹配所有单个非数字字符 |
\w匹配所有单个字母或数字字符;同义词是 [:alnum:] |
[A-E] 匹配所有大写的 A、B、C、D 或 E |
[^A-E] 匹配除大写 A、B、C、D 或 E 之外的任何字符 |
X? 匹配出现零次或一次的大写字母 X |
X*匹配零个或多个大写字母 X |
X+ 匹配一个或多个大写字母 X |
X{n} 精确匹配 n 个大写字母 X |
X{n,m}至少匹配 n 个且不多于 m 个大写字母 X;如果忽略 m,则表达式将尝试匹配至少 n 个 X |
(abc|def)+ 匹配一连串的(最少一个)abc 和 def;abc 和 def 将匹配 |
下面是 regex 的常见用法示例。
假定 Web 站点要求每个用户创建一个登录名。每个用户名至少要包含 3 个但不多于 10 个字母数字字符,并且必须以字母为开头。要强制遵守这些规范,可以使用以下 regex 在提交给应用程序时验证用户名:
^[A-Za-z][A-Za-z0-9_]{2,9}$。
脱字符号将匹配字符串的开头。第一个集合
[A-Za-z] 表示所有字母。第二个集合
[A-Za-z0-9_]{2,9} 表示由至少 2 个至多 9 个任意字母、数字和划线组成的序列。并且使用美元符号 (
$) 匹配字符串末尾。
乍看之下,美元符号可能看似不必要,但是它是至关重要的。如果忽略掉它,regex 将匹配开头为字母、包含 2 至 9 个字母数字字符以及任意数目的任何其他字符的所有字符串。换言之,没有美元符号锚定字符串的结尾,带有匹配前缀(例如 “martin1234-cruft”)的非常长的字符串将生成误判 (false positive)。