2016-01-14 3 views
1

Я пытаюсь создать регулярное выражение, чтобы проверить текст, вставленный в textarea. В принципе, при наборе я проверяю количество вставленных слов. В качестве специальных символов разрешены только запятые и полная остановка.Проблема с регулярным выражением JS

Проблема, например, когда я набираю word,anotherword, мое регулярное выражение распознает только одно слово вместо двух. Я не могу найти для него хорошее регулярное выражение.

Мое текущее регулярное выражение:

val.match(/\S+[A-Za-z]/g 

Что я должен добавить? Большое спасибо!

+0

Попробуйте 'val.match (/ \ w +/g)'. '\ S' соответствует любым символам без пробелов. –

ответ

1

Поскольку \S соответствует непробельным символам и запятую, тоже, вы должны использовать

val.match(/\w+/g) 

A \w спичку слово символов, те, в A-Z, a-z, 0-9 диапазонов и _ (подчеркивание) ,

+0

Спасибо. Это работает отдельно от двух вещей. Во-первых, когда я сначала нажимаю пробел в качестве первого символа в текстовом поле, он возвращает null. Во-вторых, если я набираю -> слово, то он считает, что вместо слова 2 слова должны быть как бы то ни было. Есть идеи? – Beppe

+0

'\ w +' не соответствует пробелам, поэтому 'null' правильный, [в текстовой области нет слова] (https://regex101.com/r/sP3zF5/1). Этот шаблон [не может соответствовать '->'] (https://regex101.com/r/sP3zF5/2), поскольку '-' и'> 'не являются символами слов. –

+0

Извините, здесь есть недоразумение. Я не вставляю «->» в текстовое поле, а «слово» ... Я использовал стрелку, чтобы указать здесь слово :)) ahah ... вот скрипка https://jsfiddle.net/1hxd4qdr/ – Beppe

0

Вы хотите извлечь слова или проверить, соответствует ли введенный текст правильному формату?

Если во-первых, используйте js Array.split (",") и убедитесь, что каждое слово в порядке.

В противном случае, я думаю, что это относиться следует сделать это:

val.match(/^(\w+\,?)+$/);

Используйте^и $, чтобы убедиться, что она начинается и заканчивается вокруг найденного в правильном формате.

+0

Мне нужно, чтобы любое введенное слово могло иметь пробелы до или после. Кроме того, как я уже сказал, он может содержать запятую, полную остановку или aphostrophe после себя, как -> (слово, слово2 | word.word2 | слово word2) и считаться одним словом. – Beppe

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