Regex 什么是只允许大写/小写(字母字符)、句点、空格和破折号的正则表达式?

Regex 什么是只允许大写/小写(字母字符)、句点、空格和破折号的正则表达式?,regex,Regex,我在创建一个正则表达式验证程序时遇到问题,该验证程序检查输入是否只有大写或小写字母、空格、句点、下划线和破折号。无法通过搜索联机找到此示例。例如: 这些都可以: Dr. Marshall sam smith .george con-stanza .great peter. josh_stinson smith _.gorne 任何包含其他字符的内容都是不正确的。这是数字或任何其他符号。您要查找的正则表达式是^[A-Za-z.\s_-]+$ ^断言正则表达式必须在主题开头匹配 []是字符类-允

我在创建一个正则表达式验证程序时遇到问题,该验证程序检查输入是否只有大写或小写字母、空格、句点、下划线和破折号。无法通过搜索联机找到此示例。例如:

这些都可以:

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

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

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

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

当您测试正则表达式时,您可能会发现类似的工具非常有用。这允许您在编写样本数据时实时查看正则表达式与样本数据的匹配(或不匹配)。

查看中的正则表达式基础知识。它只需要两个和一个:

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

^[a-z ._-]*$

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

-
表示
\x2e-\x5f
,即类似于
a-z
的范围。此外,如果要逐个元素解释正则表达式,最好在正则表达式中使用和
注释。它更具可读性,可以与所有注释一起复制到OP的代码中。感谢您提供有关
-
是课程最后一个的具体提示。我一直在想为什么我的表达式不匹配。@Esailija
之间的范围应该是什么?我认为在一个真实的例子中没有范围,或者是?这将它限制为ASCII!一般来说,您需要像
^[\p{Upper}\p{Lower}.\u-]*$
^[\p{Letter}.\u-]*$
@MRAB这样的东西,通常是的,但这并不是所有正则表达式风格都支持的(我们不知道OP使用的风格)。此外,他甚至可能不支持unicode输入。最后,OP应该先学习正则表达式的基础知识,然后再考虑unicode属性。
^[a-z ._-]*$