我在创建正则表达式验证器时遇到问题,该验证器检查以确保输入仅包含大写或小写字母,空格,句点,下划线和短划线.无法通过搜索在线找到此示例.例如:
这些都可以:
Dr. Marshall
sam smith
.george con-stanza .great
peter.
josh_stinson
smith _.gorne
Run Code Online (Sandbox Code Playgroud)
任何包含其他角色的东西都不行.这是数字或任何其他符号.
Kel*_*vin 66
你正在寻找的正则表达式是 ^[A-Za-z.\s_-]+$
^ 断言正则表达式必须在主题的开头匹配[] 是一个字符类 - 允许在此表达式内匹配的任何字符A-Z 允许一系列大写字符a-z 允许一系列小写字符. 匹配句点而不是字符范围\s 匹配空格(空格和制表符)_ 匹配下划线-匹配破折号(连字符); 我们将它作为字符类中的最后一个字符,因此它不会被解释为字符范围的一部分.我们也可以转义它(\-)并把它放在角色类的任何地方,但那不太清楚+断言前面的表达式(在我们的例子中,是字符类)必须匹配一次或多次$ 最后,这断言我们现在已经到了主题的最后当您测试正则表达式时,您可能会发现像regexpal这样的工具很有帮助.这使您可以在编写时实时查看正则表达式匹配(或无法匹配)示例数据.
在教程中查看正则表达式的基础知识。它只需要两个锚点和一个重复的 字符类:
^[a-zA-Z ._-]*$
Run Code Online (Sandbox Code Playgroud)
如果您使用不区分大小写的修饰符,您可以将其缩短为
^[a-z ._-]*$
Run Code Online (Sandbox Code Playgroud)
请注意,空格很重要(它只是一个与任何其他字符一样的字符)。