Regex匹配多个单词

本文关键字:单词 Regex | 更新日期: 2023-09-27 18:21:14

我有一个ASP.NET MVC应用程序,其中包含一个名为"名字/姓氏"的表单字段。我需要添加一些基本的验证,以确保人们至少输入两个单词。它不需要在检查单词长度等方面完全全面,我们基本上只需要防止人们只输入自己的名字,这就是目前正在发生的事情。我不想只限于字母字符,因为有些名字包括标点符号。我只想确保人们输入了至少两个用空格隔开的单词。

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

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

这在一定程度上有效(它检查2个单词),但如果输入标点符号,则无效,这不是我想要的。

有人能建议如何修改以上内容,这样单词中是否使用标点符号就无关紧要了吗?我不擅长正则表达式语法,所以在这里提问。

谢谢。

Regex匹配多个单词

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

'w.*'s.*'w

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

^.*'w.*'s.*'w.*$

例如,它们将匹配D' Addario(但D'Artagnan本身不匹配,因为根据空间标准,它算作一个词)。

也许只是:

@"'w's'w"

word white space word

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

Demohttp://rubular.com/r/YN8eFa1yFE

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

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

参见regex演示

它不会只接受FirstFirst

Regex细分:

  • ^-字符串的开头
  • 's*-零个或多个空白
  • 'S+-1个或多个非空白符号
  • (?:'s+'S+)+-1个或多个序列的。。。
    • 's+-1个或多个空白序列(删除+以在单词之间只允许1个空白)
    • 'S+-1个或多个非空白符号
  • 's*-零个或多个空白
  • $-字符串末尾