¿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]); 
  • ¿Cuál es el significado de / gi en una expresión regular?
  • Javascript: indexOf con expresión regular
  • Obtener todos los elementos iframe
  • Diferencias JavaScript RegExp
  • Reemplazar el penúltimo carácter "/" en URL con un '#'
  • Validación de URL: acepta URL sin protocolos
  • ¿Cómo extraer el nombre del file de una url usando javascript / jquery?
  • Regex para eliminar último / si existe como el último carácter de la cadena
  • Coincidencia de una cadena solo si no está en las tags <script> o <a>
  • JavaScript Regex para que coincida con una URL en un campo de text
  • Marque el espacio presionado y luego agregue la label diez usando jquery con multi idioma
  • Javascript tiene muchos buenos JS marco (como Node.js AngularJS Vue.js React.js) es el mejor lenguaje de script.