我有一个ASP.NET MVC应用程序,其中包含一个名为“First / last name”的表单字段。我需要添加一些基本的验证,以确保人们输入至少两个单词。它不需要在检查单词长度等方面完全全面,我们基本上只需要阻止人们输入他们的名字,这正是当前正在发生的事情。我不想仅限于字母字符,因为有些名称包含标点符号。我只想确保人们至少输入两个用空格分隔的单词。
我目前有以下正则表达式:
[RegularExpression(@"^((\b[a-zA-Z]{2,40}\b)\s*){2,}$", ErrorMessage = "Invalid first/last name")]
这在一定程度上起作用(它会检查2个单词)但如果输入标点符号则无效,这不是我正在寻找的。 p>
有人可以建议如何修改上述内容,以便在单词中使用标点符号无关紧要吗?我对正则表达式语法不太满意,因此请问这里。
感谢。
答案 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
它不会仅接受First
或First
。
正则表达式细分:
^
- 字符串开头\s*
- 零个或多个空格\S+
- 一个或多个非空白符号(?:\s+\S+)+
- 一个或多个......的序列
\s+
- 一个或多个空格序列(删除+
只允许单词之间有1个空格)\S+
- 一个或多个非空白符号\s*
- 零个或多个空格$
- 字符串结尾答案 3 :(得分:0)
您好,您可以使用此正则表达式进行验证 ' ^ [a-zA-Z0-9] + {1} [a-zA-Z0-9] + $`'