2015-06-24 5 views
2

мне нужно регулярное выражение для 2-х и более слов, разделенных пробелами, например:Regex для более чем одного слова, разделенного пробелом?

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

[\ ш \ s] + дает мне все слова, но не знаю, как исключить 1 слово из проверки.

+0

'(\ w + *) {2,}'? – 123

ответ

2

Не включайте пробелы в классе символов: \w+\s+\w+

Оставляя пространства в классе символов, вы указали, что вы хотите, любое количество слов символа или пространства, которое будет быстро Gobble по всей строке. Разделяя слова и классы пространства, вы указываете, что хотите «любое количество словных символов, за которыми следует любое количество пробелов, а затем еще несколько символов слова».

Если вы не хотите захватить слова, удалить квантор из них, как вы не заботитесь, как долго слова, только что они присутствуют: класс \w\s+\w

+0

«один два три» не подтверждается, три ищут другое слово –

+0

[Работает просто отлично для меня] (https://regex101.com/r/eS9iC3/1). Шаблон будет совпадать между «одним» и «двумя», и строка будет проверена. –

1

слова, пространство, класс слово. ..

\w+ \w+

0

Я знаю его конце, но и для будущих просмотров

/(\w+\s+[^-])+\S[^-]+/ 

Это регулярное выражение будет RET urn и первая действительная часть недопустимых входов.