两个单词之间的空格

时间:2013-04-19 17:46:07

标签: javascript regex

我正在寻找一个正则表达式来检查输入字段中至少有两个单词。

我试过了:

var spaceReg = /^\w+\s\w+$/

它工作正常,但如果我有三个或更多的单词,不再是(或者如果我有一个像meyer-miller这样的单词)。

我的下一次尝试是这样的:

/^(?:[\w-]+ ?)*$/

但如果我在第一个单词的末尾有一个空格并且只有一个单词,那么这也有效。

这里有专家帮忙吗?

3 个答案:

答案 0 :(得分:2)

只是不添加字符串标记的开头和结尾:

var spaceReg =  /\w\s+\w/

如果您还想确保除了单词和空格之外别无其他,那么您可以使用

var spaceReg =  /^\w+\s+\w[\w\s]*$/

如果你想在开始时允许空格(不确定你的问题)和破折号(来自评论),请使用

var spaceReg =  /^\s*[\w-]+\s+[\w-][\w-\s]*$/

答案 1 :(得分:1)

编辑:我原本以为你想用破折号分隔的单词来匹配..试试这个:http://jsfiddle.net/YbWYp/8/

var spaceReg =  /[\-\w]+\s[\-\w]+/

编辑:另外,如果你只想确保在你正在测试的字符串中的某个非空格内有空格,你可以做一些简单的事情:http://jsfiddle.net/YbWYp/10/

var pattern = /\S\s\S/

答案 2 :(得分:0)

1.8.7 :004 > "asd asdasd "=~ /\w+(\s\w+)+/ 
 => 0 
1.8.7 :005 > "asd asdasd"=~ /\w+(\s\w+)+/ 
 => 0 
1.8.7 :006 > "asd asdasd asd"=~ /\w+(\s\w+)+/ 
 => 0 
1.8.7 :007 > "asd"=~ /\w+(\s\w+)+/ 

您可以在\ s的右侧添加*以支持多个空格