Помогите с регулярным выражением в JavaScript
-
05-07-2019 - |
Вопрос
У меня есть образец текста, который извлекается из имени класса в 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];
Вот справочный сайт .