什么是正则表达式只允许大写/小写(字母字符),句点,空格和短划线?

时间:2012-11-13 00:03:54

标签: regex

我在创建正则表达式验证器时遇到问题,该验证器检查以确保输入仅包含大写或小写字母,空格,句点,下划线和短划线。无法通过搜索在线找到此示例。例如:

没关系:

Dr. Marshall
sam smith
.george con-stanza .great
peter.
josh_stinson
smith _.gorne

包含其他字符的任何内容都不行。这是数字或任何其他符号。

2 个答案:

答案 0 :(得分:56)

您正在寻找的正则表达式是^[A-Za-z.\s_-]+$

  • ^断言正则表达式必须在主题的开头匹配
  • []是一个字符类 - 允许在此表达式中匹配的任何字符
  • A-Z允许一系列大写字符
  • a-z允许使用一系列小写字符
  • .匹配一段时间 而不是一系列人物
  • \s匹配空格(空格和制表符)
  • _匹配下划线
  • -匹配破折号(连字符);我们将它作为字符类中的最后一个字符,因此它不会被解释为字符范围的一部分。我们也可以将其转义(\-)并将其放在角色类的任何位置,但不太清楚
  • +断言前面的表达式(在我们的例子中,字符类)必须匹配一次或多次
  • $最后,这声称我们现在已经在主题的最后了

当您测试正则表达式时,您可能会发现regexpal这样的工具很有帮助。这使您可以在编写时实时查看正则表达式匹配(或无法匹配)示例数据。

答案 1 :(得分:4)

查看a tutorial中正则表达式的基础知识。它只需要两个anchors和一个repeated character class

^[a-zA-Z ._-]*$

如果使用不区分大小写的修饰符,则可以将其缩短为

^[a-z ._-]*$

请注意,空间很重要(它只是一个像其他任何字符一样的字符)。