由空格分隔的多个单词的正则表达式?

3

我需要一个正则表达式,用于匹配由空格分隔的两个或更多单词,例如:

Test            //invalid
Test two        //valid
Test two three  //valid
Test-two        //invalid

[\w\s]+会返回所有单词,但我不确定如何从验证中排除1个单词。

3个回答

3
不要在字符类中包含空格:\w+\s+\w+ 如果在字符类中保留空格,就相当于指定您想要任意数量的单词字符或空格,这将迅速吞噬整个字符串。通过分离单词和空格类,您可以指定“任意数量的单词字符后跟任意数量的空格字符,然后是一些单词字符”。
除非您想捕获单词,否则从它们中删除量词,因为您不关心单词有多长,只需它们存在即可:\w\s+\w

2
"one two three" 不符合验证,三正在寻找另一个单词。 - Stewie Griffin
这对我来说完全正常。该模式将匹配“one”和“two”之间的字符串,并进行验证。 - Mr. Llama
不验证超过2个单词 - Cedric Ipkiss
1
@che-azeh:没错,但修改起来也不难。具体来说,将\s+\w+提取为可重复模式即可解决问题:\w+(?:\s+\w+)+ - Mr. Llama

1
我知道现在有点晚了,但是针对未来的观看。
/(\w+\s+[^-])+\S[^-]+/

这个正则表达式将返回有效输入和无效输入的第一个有效部分。

1

单词类别,空格,单词类别...

\w+ \w+


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接