Вопрос

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

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

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

/err-(\S*)/ig

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

Это было полезно?

Решение

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

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

Другие советы

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top