如何使用转义字符使用javascript拆分方法?

时间:2013-01-15 08:28:27

标签: javascript regex

  

可能重复:
  how to split a string in js with some exceptions

例如,如果字符串是:

abc&def&ghi\&klm&nop

必需的输出是字符串数组

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

请建议我最简单的解决方案。

5 个答案:

答案 0 :(得分:6)

这是JavaScript中的解决方案:

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

它使用match来匹配([not \ and &] or [\ and &])的所有字符。

答案 1 :(得分:6)

您需要match

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

我假设您的字符串来自外部源并且不是javascript文字。

答案 2 :(得分:1)

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

你需要替换\&双斜线

how to split a string in js with some exceptions

test将包含您需要的数组

答案 3 :(得分:0)

你只能使用oldschool indexOf:

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);

答案 4 :(得分:-3)

试试这个:

var v = "abc&def&ghi\&klm&nop";
var s = v.split("&");
for (var i = 0; i < s.length; i++)
    console.log(s[i]);