正则表达式匹配多个单词

时间:2015-11-09 10:14:48

标签: c# regex asp.net-mvc

我有一个ASP.NET MVC应用程序,其中包含一个名为“First / last name”的表单字段。我需要添加一些基本的验证,以确保人们输入至少两个单词。它不需要在检查单词长度等方面完全全面,我们基本上只需要阻止人们输入他们的名字,这正是当前正在发生的事情。我不想仅限于字母字符,因为有些名称包含标点符号。我只想确保人们至少输入两个用空格分隔的单词。

我目前有以下正则表达式:

[RegularExpression(@"^((\b[a-zA-Z]{2,40}\b)\s*){2,}$", ErrorMessage = "Invalid first/last name")]

这在一定程度上起作用(它会检查2个单词)但如果输入标点符号则无效,这不是我正在寻找的。

有人可以建议如何修改上述内容,以便在单词中使用标点符号无关紧要吗?我对正则表达式语法不太满意,因此请问这里。

感谢。

4 个答案:

答案 0 :(得分:1)

你想要两个单词,所以它们之间至少有一个空格,除此之外你想要允许其他所有单词(例如,标点符号)。所以保持简单:

\w.*\s.*\w

或者如果你必须将其锚定到开始和结束:

^.*\w.*\s.*\w.*$

例如,这些匹配D' Addario(但不是D'Artagnan,因为它按空格标准计为一个单词。)

答案 1 :(得分:0)

也许只是:

@"\w\s\w"

word white space word

答案 2 :(得分:0)

如果您只想允许一系列非空白字符后跟一个或多个空格字符序列,后跟非空白字符,则可以使用

^\s*\S+(?:\s+\S+)+\s*$

请参阅regex demo

它不会仅接受FirstFirst

正则表达式细分:

  • ^ - 字符串开头
  • \s* - 零个或多个空格
  • \S+ - 一个或多个非空白符号
  • (?:\s+\S+)+ - 一个或多个......的序列
    • \s+ - 一个或多个空格序列(删除+只允许单词之间有1个空格)
    • \S+ - 一个或多个非空白符号
  • \s* - 零个或多个空格
  • $ - 字符串结尾

答案 3 :(得分:0)

您好,您可以使用此正则表达式进行验证 ' ^ [a-zA-Z0-9] + {1} [a-zA-Z0-9] + $`'

演示http://rubular.com/r/YN8eFa1yFE