Tengo una pregunta sobre expresiones regulares simples. Necesito ubicarme entre estos caracteres: - y ~
Mi cadena: Champions tour - To Win1 - To Win2 ~JIM FURYK
Cuando uso esto: \-([^)]+\~) está dando como resultado esto:
To Win1 - To Win2 ~Pero necesito esto:
To Win2 ~JIM FURYK¿Es posible esto?
Mi expresión regular está aquí: https://regex101.com/r/fJBLXb/1/
Simplemente agregue \-([^-)]+\~) - guión para no coincidir
Podrías usar match de la siguiente manera:
var input = "Champions tour - To Win1 - To Win2 ~JIM FURYK"; var output = input.match(/- ([^-]+~.*)$/)[1]; console.log(output);El patrón de expresiones regulares utilizado anteriormente dice que coincida:
- a hyphen [ ] a single space ( capture what follows [^-]+ match all content WITHOUT crossing another hyphen ~ ~ .* all remaining content ) stop capture $ end of the stringSu expresión regular \-([^)]+\~) coincide con la expresión más a la izquierda - que es seguida directamente por uno o más caracteres que no sean ) (por lo que coincide con - , a , § , etc.) y luego con un carácter ~ . No se detiene en los caracteres - y, por lo tanto, puede coincidir con cualquier cantidad de guiones.
Para hacer coincidir el valor después del último guión, puede usar
[^\s-][^-]*$Vea la demostración de expresiones regulares y el gráfico de expresiones regulares . Detalles :
[^\s-] - un carácter que no sea un espacio en blanco y -[^-]* - cero o más caracteres que no sean -$ - final de la cadena.Vea la demostración de JavaScript:
const text = 'Champions tour - To Win1 - To Win2 ~JIM FURYK'; const match = text.match(/[^\s-][^-]*$/); if (match) { console.log(match[0]); }