我正在寻找一个正则表达式来检查输入字段中至少有两个单词。
我试过了:
var spaceReg = /^\w+\s\w+$/
它工作正常,但如果我有三个或更多的单词,不再是(或者如果我有一个像meyer-miller这样的单词)。
我的下一次尝试是这样的:
/^(?:[\w-]+ ?)*$/
但如果我在第一个单词的末尾有一个空格并且只有一个单词,那么这也有效。
这里有专家帮忙吗?
答案 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的右侧添加*以支持多个空格