【发布时间】:2011-12-02 05:36:29
【问题描述】:
我的问题很简单,我想匹配具有以下属性的字符串
- 没有空格
- 必须以字母开头
- 不得包含除下划线以外的任何其他特殊字符
- 可能包含数字
请帮助创建这样的正则表达式。
【问题讨论】:
-
你对“字母”的定义是什么? A-Z?
我的问题很简单,我想匹配具有以下属性的字符串
请帮助创建这样的正则表达式。
【问题讨论】:
^[a-zA-Z][a-zA-Z0-9_]*$
剖析它:
^ 行/字符串开头[a-zA-Z] 以字母开头[a-zA-Z0-9_]* 后跟零个或多个字母、下划线或数字。$ 行/字符串结束如果您需要考虑 Unicode,那么以下内容可能更合理:
^\p{L}[\p{L}\p{Nd}_]*$
这不仅会匹配 ASCII 字母和数字,还会匹配 Unicode 支持的所有脚本。数字仅限于十进制数字,因此您不会得到罗马数字。
【讨论】:
/^[a-zA-Z]\w*$/
a-Z - 以字母开头
\w - 所有字母、数字和下划线
【讨论】:
\w 匹配的字母比a-zA-Z 多很多(这也是为什么我也明确地为字符串的其余部分使用了字符类)。