2012-05-17 3 views
2

У меня проблемы с этим регулярным выражением. Я хочу вернуть первое появление этого шаблона #2344..... Но почему-то это возвращает все вхождения.javascript соответствует слишком много раз

var title = '#34 #24 pofejwopwefjopewfjpfeijefow' 
pointsRegEx = /(#\d+){1}/; 
points = title.match(pointsRegEx); 

JSFIDDLE: http://jsfiddle.net/KbGVU/1

+1

Как о/# \ d + /? Не могли бы вы показать больше примеров? –

+0

Это сработало, что я не мог его инкапсулировать. – einstein

ответ

4

Ваше регулярное выражение работает нормально. В вашем регулярном выражении у вас есть (). Это создает группу. .match возвращает массив. Первый элемент - результат, сопоставляемый всем регулярным выражением, остальные элементы - это каждая группа из вашего регулярного выражения.

.match возвращает вас ['#34','#34'], потому что первое - это все регулярное выражение, а второе - это группа в вашем регулярном выражении (#\d+).

Примечание: {1} не требуется, так как он будет соответствовать 1 по умолчанию.

Свойства массива, возвращенного с .match, задокументированы здесь: mozilla docs.

+0

Спасибо! Rocket, – einstein

+0

Нет проблем. :-) –

+0

@ Woho87 Вы должны принять это как правильный ответ, если это вам помогло. Это будет полезно для других с тем же вопросом. – benekastah

0

Got chya ... Вам не нужно, чтобы соответствовать матч двухкомпонентной() группировка ...

http://jsfiddle.net/KbGVU/3/

/#\d*/ должны делать это

+0

Я думаю, он хочет номер после хэша. Так что/# \ d +/лучше. –

+0

Это одно и то же, одно просто жадно. – Relic

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