我正在寻找一个正则表达式来检查我的输入字段中是否至少有两个单词。
我试过这个:
var spaceReg = /^\w+\s\w+$/
它工作得很好,但如果我有三个或更多的词,不再是(或者如果我有一个像 meyer-miller 这样的词)。
我的下一次尝试是这样的:
/^(?:[\w-]+ ?)*$/
但是如果我在第一个单词的末尾有一个空格并且只有一个单词,这也有效。
有专家来帮忙吗?
我正在寻找一个正则表达式来检查我的输入字段中是否至少有两个单词。
我试过这个:
var spaceReg = /^\w+\s\w+$/
它工作得很好,但如果我有三个或更多的词,不再是(或者如果我有一个像 meyer-miller 这样的词)。
我的下一次尝试是这样的:
/^(?:[\w-]+ ?)*$/
但是如果我在第一个单词的末尾有一个空格并且只有一个单词,这也有效。
有专家来帮忙吗?
只需不要添加字符串标记的开始和结束:
var spaceReg = /\w\s+\w/
如果您还想确保除了单词和空格之外什么都没有,那么您可以使用
var spaceReg = /^\w+\s+\w[\w\s]*$/
如果您想在开始时允许空格(从您的问题中不确定)和破折号(从评论中),请使用
var spaceReg = /^\s*[\w-]+\s+[\w-][\w-\s]*$/
编辑:我原本以为你想要用破折号分隔的单词来匹配..试试这个:http: //jsfiddle.net/YbWYp/8/
var spaceReg = /[\-\w]+\s[\-\w]+/
编辑:另外,如果您只是想确保在您正在测试的字符串中的某个非空格内有一些空格,您可以做一些简单的事情:http: //jsfiddle.net/YbWYp/10/
var pattern = /\S\s\S/
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右边加*来支持多个空格