【问题标题】:Regex to match string containing letters and only underscore正则表达式匹配包含字母且仅下划线的字符串
【发布时间】:2011-12-02 05:36:29
【问题描述】:

我的问题很简单,我想匹配具有以下属性的字符串

  • 没有空格
  • 必须以字母开头
  • 不得包含除下划线以外的任何其他特殊字符
  • 可能包含数字

请帮助创建这样的正则表达式。

【问题讨论】:

  • 你对“字母”的定义是什么? A-Z?

标签: regex vb.net .net-2.0


【解决方案1】:
^[a-zA-Z][a-zA-Z0-9_]*$

剖析它:

  • ^ 行/字符串开头
  • [a-zA-Z] 以字母开头
  • [a-zA-Z0-9_]* 后跟零个或多个字母、下划线或数字。
  • $ 行/字符串结束

如果您需要考虑 Unicode,那么以下内容可能更合理:

^\p{L}[\p{L}\p{Nd}_]*$

这不仅会匹配 ASCII 字母和数字,还会匹配 Unicode 支持的所有脚本。数字仅限于十进制数字,因此您不会得到罗马数字。

【讨论】:

  • 优秀。奇迹般有效。谢谢。
【解决方案2】:
/^[a-zA-Z]\w*$/

a-Z - 以字母开头

\w - 所有字母、数字和下划线

【讨论】:

  • \w 匹配的字母比a-zA-Z 多很多(这也是为什么我也明确地为字符串的其余部分使用了字符类)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-29
  • 2017-10-02
  • 1970-01-01
  • 2016-04-21
相关资源
最近更新 更多