Помогите с регулярным выражением в JavaScript - PullRequest
1 голос
/ 07 января 2009

У меня есть образец текста, который извлекается из имени класса в HTML-элементе:

rich-message err-test1 erroractive
rich-message err-test2 erroractive
rich-message erroractive err-test1
err-test2 rich-message erroractive

Я пытаюсь сопоставить данные "test1" / "test2" в каждом из этих примеров. В настоящее время я использую следующее регулярное выражение, которое соответствует типу слова "err-test1". Я не могу понять, как ограничить его только данными после дефиса (-).

/err-(\S*)/ig

Голова болит от этой стены.

Ответы [ 3 ]

3 голосов
/ 07 января 2009

Из того, что я читаю, ваш код уже работает.

Regex.exec() возвращает массив результатов в случае успеха.

Первый элемент в массиве (индекс 0) возвращает всю строку, после чего все () вложенные элементы помещаются в этот массив.

var string = 'rich-message err-test1 erroractive';
var regex = new RegExp('err-(\S*)', 'ig');
var result = regex.exec(string);

alert(result[0]) --> returns err-test1
alert(result[1]) --> returns test1
0 голосов
/ 07 января 2009

Материал после - должен быть в массиве результатов. Первый элемент - это весь соответствующий текст (например, «err-test1»), а следующие элементы - это совпадения из круглых скобок (например, «test1»).

myregex = /err-(\S*)/ig;
mymatch = myregex.exec("data with matches in it");
testnum = mymatch[1];

Вот справочный сайт .

0 голосов
/ 07 января 2009

Вы можете попробовать 'err - ([^ \ n \ r] *)' - но вы уверены, что проблема в регулярном выражении? Используете ли вы весь результат, а не только первый снимок?

...