¿Cómo puedo usar el método de split de JavaScript usando el carácter de escape?

Posible duplicado:
cómo dividir una cadena en js con algunas excepciones

Por ejemplo, si la cadena es:

abc&def&ghi\&klm&nop 

La salida requerida es una matriz de cadena

 ['abc', 'def', 'ghi\&klm', 'nop] 

Por favor sugiérame la solución más simple.

5 Solutions collect form web for “¿Cómo puedo usar el método de split de JavaScript usando el carácter de escape?”

Aquí hay una solución en JavaScript:

 var str = 'abc&def&ghi\\&klm&nop', str.match(/([^\\\][^&]|\\&)+/g); //['abc', 'def', 'ghi\&klm', 'nop] 

Utiliza la match para unir todos los caracteres que son los que son ([not \ and &] or [\ and &]) .

Necesitas una match

  "abc&def&ghi\\&klm&nop".match(/(\\.|[^&])+/g) # ["abc", "def", "ghi\&klm", "nop"] 

Supongo que su cadena proviene de una fuente externa y no es un literal de JavaScript.

  var str = "abc&def&ghi\\&klm&nop"; var test = str.replace(/([^\\])&/g, '$1\u000B').split('\u000B'); 

Necesita replace \ & con barras dobles

cómo dividir una cadena en js con algunas excepciones

testing contendrá la matriz que necesita

Puedes hacerlo solo con el índice oldschoolDe:

 var s = 'abc&def&ghi\\&klm&nop', lastIndex = 0, prevIndex = -1, result = []; while ((lastIndex = s.indexOf('&', lastIndex+1)) > -1) { if (s[lastIndex-1] != '\\') { result.push(s.substring(prevIndex+1, lastIndex)); prevIndex = lastIndex; } } result.push(s.substring(prevIndex+1)); console.log(result); 

testing esto :

 var v = "abc&def&ghi\&klm&nop"; var s = v.split("&"); for (var i = 0; i < s.length; i++) console.log(s[i]); 
  • Objetivo de la opción "no permitir insecurity en expresiones regulares" de JSLint
  • Comtesting si un textbox contiene solo numbers
  • Emparejamiento recursivo con expresiones regulares en Javascript
  • ¿Regex para llaves dobles de estilo bigote?
  • Javascript coincide y reemplace con unicode
  • Cómo resaltar una parte del text en textarea
  • Usando javascript regexp para encontrar el primer Y más largo partido
  • RegExp mayúsculas y minúsculas insensible a las mayúsculas
  • ¿Por qué la statement if (! Condition) {console.log (condition)} muestra true
  • Javascript regexp: solo si el primer carácter no es un asterisco
  • ¿Hay un equivalente en jQuery a `preg_replace ()` de PHP?
  • Javascript tiene muchos buenos JS marco (como Node.js AngularJS Vue.js React.js) es el mejor lenguaje de script.