2013-04-19 2 views
0

Я ищу регулярное выражение, чтобы проверить, что в моем поле ввода есть как минимум два слова.Пробел между двумя словами

Я попытался это:

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

Он отлично работает, но если у меня есть три или более слов, не больше (или, если у меня есть слово, как этот Meyer-фрезеровщик).

Моя следующая попытка была такова:

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

, но это работает и, если у меня есть место в конце первого слова и с отдельными словами.

Есть ли здесь специалист по оказанию помощи?

ответ

1

EDIT: Первоначально я думал, что вы хотели слова, разделенные тире, чтобы соответствовать .. попробовать это: http://jsfiddle.net/YbWYp/8/

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

EDIT: Кроме того, если вы просто хотите, чтобы убедиться, что у вас есть некоторое пространство внутри некоторой некосмическими где-то в строка, которую вы тестируете, вы могли бы сделать что-то просто: http://jsfiddle.net/YbWYp/10/

var pattern = /\S\s\S/ 
+0

thats отлично работает отлично.просто чтобы сделать его идеальным. если между словами есть два или более пробелов, как я могу заставить его работать? – hamburger

+0

добавить a + после \ s, '/ [\ - \ w] + \ s + [\ - \ w] + /', + означает «один или несколько», a * будет означать «0 или более» – smerny

+0

var pattern =/\ S \ s \ S/отлично работает – hamburger

2

Просто не добавить начало и конец строки маркеров:

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

Если вы хотите, чтобы убедиться, что вы не имеете ничего больше, чем слова и пробелы, то вы можете использовать

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

Если вы хотите разрешить пробелы при запуске (не уверены в вашем вопросе) и тире (из комментариев), используйте

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

И что про тире? – VisioN

+0

Вы даже можете опустить кванторы '+'. –

+0

'/ \ w \ s * \ w /' для поддержки нескольких пробелов – fotanus

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 для поддержки нескольких пространств

Смежные вопросы