Desde que comencé a escribir esta pregunta, creo que encontré las respuestas a cada pregunta que tenía, pero pensé que lo publicaría de todos modos, ya que podría ser útil para otros y podría aclarar más ser útil.Javascript no se dividirá usando regex
Estaba tratando de usar una expresión regular con lookahead 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í es un ejemplo simplificado:
No funciona:
"aaaaBaaaa".split("(?=B).");
Obras:
"aaaaBaaaa".match("(?=B).");
Aparece fue que en el ejemplo de división, no estaba siendo interpretado la cadena pasada el problema como una expresión regular. Usar barras diagonales en lugar de comillas parece solucionar el problema.
"aaaaBaaaa".split(/(?=B)./);
me confirmó mi teoría con el siguiente ejemplo parecer tonto:
"aaaaaaaa(?=B).aaaaaaa".split("(?=B).");
¿Alguien más piensa que es extraño que la función de concordancia asume que tiene una expresión regular, mientras que la función de división no es así?
Siempre he usado la sintaxis/regex/(sin comillas) para todo: coincide, divide, reemplaza. No me di cuenta de que no era necesario en algunos casos. –
En realidad, tiene sentido dejar que match() asuma una expresión regular (¿con qué * else * podría coincidir?) Y split() asumir una cadena, ya que la división en una cadena es probablemente más rápida que la división en una expresión regular.Solo si pasa una expresión regular real para dividir(), hará la división de expresiones regulares más lenta. – Tomalak