Ajuda com regex em javascript
-
05-07-2019 - |
Pergunta
Eu tenho este texto amostra, que é obtido a partir do nome da classe em um elemento html:
rich-message err-test1 erroractive
rich-message err-test2 erroractive
rich-message erroractive err-test1
err-test2 rich-message erroractive
Eu estou tentando corresponder ao "test1" / dados "test2" em cada um desses exemplos. Atualmente, estou usando o seguinte regex, que corresponde ao tipo "err-test1" da palavra. Eu não consigo descobrir como limitá-lo a apenas os dados após o hífen (-).
/err-(\S*)/ig
cabeça dói de bater contra esta parede.
Solução
Pelo que eu estou lendo, seu código já funciona.
Regex.exec()
retorna uma matriz de resultados em caso de sucesso.
O primeiro elemento na matriz (índice 0) retorna toda a sequência, após o que todos os elementos ()
fechado são empurrados para essa matriz.
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
Outras dicas
Você poderia tentar 'err - ([^ \ n \ r] *)' - mas você tem certeza de que é a regex que é o problema? Você está usando todo o resultado, e não apenas a primeira captura?
O material após o - deve ser na matriz resultados. O primeiro item é todo o texto correspondente (por exemplo, "err-test1") e os próximos itens são os jogos dos parênteses de captura (por exemplo, "test1").
myregex = /err-(\S*)/ig;
mymatch = myregex.exec("data with matches in it");
testnum = mymatch[1];
Aqui está um site de referência .