Regex 正则表达式:至少一个由任何字符括起的空格

Regex 正则表达式:至少一个由任何字符括起的空格,regex,validation,Regex,Validation,我想强制我的用户在一个字符串中至少有两个单词被空格分隔 Allowed是至少有一个空格的字符串,其左右两侧至少包含一个字符。前面没有空格,后面也没有空格 一些例子: 无名氏(有效) 约翰·沃尔特·多伊(有效) 约翰(无效) John$ole(有效) 3d3n 1snt f4r(有效) 约翰三世(有效) Jöning Wölter(有效) 乔·加松(有效) 哈拉尔德水疗中心(有效) 仅供参考:我想用这个做一个很弱的全名检查。由于名称中可能出现许多特殊字符,我只想让我的用户强制在字符串中至少包含

我想强制我的用户在一个字符串中至少有两个单词被空格分隔

Allowed是至少有一个空格的字符串,其左右两侧至少包含一个字符。前面没有空格,后面也没有空格

一些例子:

  • 无名氏(有效)
  • 约翰·沃尔特·多伊(有效)
  • 约翰(无效)
  • John$ole(有效)
  • 3d3n 1snt f4r(有效)
  • 约翰三世(有效)
  • Jöning Wölter(有效)
  • 乔·加松(有效)
  • 哈拉尔德水疗中心(有效)

仅供参考:我想用这个做一个很弱的全名检查。由于名称中可能出现许多特殊字符,我只想让我的用户强制在字符串中至少包含两个单词。

如果我理解您的要求,在正则表达式中会这样翻译:

^\S+\s+.*\S$
如果希望您的空白仅为“”,请使用

^\S+ +.*\S$

但在这里要注意你的文化假设。真名不遵循严格的规则。

试试这样的方法:

^(\S+)(\s{1}\S+)+$

这与后跟一组或多组空格+单词的单词相匹配

/^\S+(\s+\S+)+$/
它确实匹配任何空格,尽管可能如此

/^\S+( +\S+)+$/

最好是

嗯,我想至少有名字和姓氏是很常见的。是吗?这很普遍,是的。但这并不意味着这是一条规则。TBH这个正则表达式比我们通常在本文中看到的要合理得多。这个解决方案使用了。*,这对性能来说可能是可怕的。它还将匹配任何空格,因此换行符、制表符etc@tmuecksch值得一读:还有@DenysSéguret谢谢。这的确是非常有用的知识。你为什么在第一个词的周围加括号?我的错。这只是为了区分这两种不同的图案,但它是非常无用的,因为它允许在前面和后面留有空格。为了避免这种情况,你能改变你的答案吗?