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.

Foi útil?

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 .

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top