javascript regexp не может найти доступ к сгруппированным результатам - PullRequest
2 голосов
/ 08 сентября 2010

re = //? (\ W +) / (\ w +) / s = '/ projects / new' s.match (вос)

У меня есть это регулярное выражение, которое я буду использовать, чтобы просеять название ветви, например, проекты, и имя «tip», например, новое

Я читал, что можно получить доступ к сгруппированным результатам с $ 1, $ 2 и т. Д., Но я не могу заставить его работать, по крайней мере, в консоли Firebug

Когда я запускаю приведенный выше код, затем запускаю

 RegExp.$1

показывает

""

То же самое происходит за 2 доллара.

есть идеи?

Спасибо!

Ответы [ 3 ]

2 голосов
/ 08 сентября 2010

match дает вам массив совпавших выражений:

> s.match(re)[1]
"projects"
> s.match(re)[2]
"new"
2 голосов
/ 08 сентября 2010

Без флага g , str.match(regexp) возвращает то же, что и regexp.exec(str).И это:

Возвращенный массив имеет сопоставленный текст в качестве первого элемента, а затем по одному элементу для каждой совпадающей скобки захвата, которая содержит захваченный текст.Если совпадение не удается, метод exec возвращает null.

Так что вы можете сделать это:

var match = s.match(re);
match[1]
1 голос
/ 08 сентября 2010

Если вы обращаетесь к массиву совпадений, сделайте что-то вроде:

re = /\/?(\w+)\/(\w+)/
s = '/projects/new'
var j = s.match(re)

alert(j[1]);
alert(j[2]);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...