Pregunta

Tengo este texto de muestra, que se recupera del nombre de la clase en un elemento html:

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

Estoy tratando de hacer coincidir la " test1 " / " test2 " datos en cada uno de estos ejemplos. Actualmente estoy usando la siguiente expresión regular, que coincide con el " err-test1 " tipo de palabra. No puedo entender cómo limitarlo a solo los datos después del guión (-).

/err-(\S*)/ig

Le duele la cabeza al golpear contra esta pared.

¿Fue útil?

Solución

Por lo que estoy leyendo, tu código ya funciona.

Regex.exec () devuelve una serie de resultados en caso de éxito.

El primer elemento de la matriz (índice 0) devuelve la cadena completa, después de lo cual todos los elementos adjuntos () se insertan en esta 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

Otros consejos

Podrías probar 'err - ([^ \ n \ r] *)' - pero ¿estás seguro de que es la expresión regular el problema? ¿Está utilizando todo el resultado, no solo la primera captura?

Las cosas después de - deberían estar en la matriz de resultados. El primer elemento es todo el texto coincidente (por ejemplo, " err-test1 ") y los siguientes elementos son las coincidencias de los paréntesis de captura (por ejemplo, " test1 ").

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

Aquí hay un sitio de referencia .

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top