validate test regulares regular probar expresiones expresion example especiales espacio ejemplos caracteres blanco alfanumerico javascript regex split lookahead

javascript - test - probar expresiones regulares



Javascript no se dividirá usando expresiones regulares (2)

Si recuerdo correctamente (y podría estar muy equivocado aquí), el método de división se implementó en javascript antes de que el motor de expresiones regulares se utilizara ampliamente, por lo que presumiblemente es por compatibilidad con versiones anteriores.

Desde que comencé a escribir esta pregunta, creo que calculé las respuestas a cada pregunta que tenía, pero pensé que la publicaría de todos modos, ya que podría ser útil para otros y podría ser útil contar con más aclaraciones.

Intentaba usar una expresión regular con anticipación con la función javascript dividida. Por alguna razón, no estaba dividiendo la cadena, aunque encuentra una coincidencia cuando llamo a Match. Originalmente pensé que el problema consistía en utilizar anticipación en mi expresión regular. Aquí hay un ejemplo simplificado:

No funciona:

"aaaaBaaaa".split("(?=B).");

Trabajos:

"aaaaBaaaa".match("(?=B).");

Parece que el problema fue que en el ejemplo dividido, la cadena pasada no se interpretaba como una expresión regular. Usar barras diagonales en lugar de comillas parece solucionar el problema.

"aaaaBaaaa".split(/(?=B)./);

Confirmé mi teoría con el siguiente ejemplo tonto:

"aaaaaaaa(?=B).aaaaaaa".split("(?=B).");

¿Alguien más piensa que es extraño que la función de coincidencia asuma que tienes una expresión regular mientras que la función de división no?


String.split acepta una cadena o expresión regular como primer parámetro. El método String.match solo acepta una expresión regular.

Me imagino que String.match intentará trabajar con lo que pase; entonces, si pasa una cuerda, la interpretará como una expresión regular. El método String.split no tiene el lujo de hacerlo porque puede aceptar expresiones regulares Y cadenas; en este caso sería una tontería adivinar.

Editar : (De: "JavaScript: La guía definitiva")

String.match requiere una expresión regular para trabajar. El argumento pasado debe ser un objeto RegExp que especifique el patrón que se emparejará. Si este argumento no es un RegExp , primero se convierte en uno pasándolo al constructor RegExp() .