Was*_*ace 15 javascript regex string split
苦苦挣扎的正则表达式要求.我需要将字符串拆分成数组,无论它在哪里找到正斜杠.但是如果正斜杠之前是逃避的话.
例如,如果我有这个字符串:
hello/world
Run Code Online (Sandbox Code Playgroud)
我希望将它分成如下数组:
arrayName[0] = hello
arrayName[1] = world
Run Code Online (Sandbox Code Playgroud)
如果我有这个字符串:
hello/wo\/rld
Run Code Online (Sandbox Code Playgroud)
我希望将它分成如下数组:
arrayName[0] = hello
arrayName[1] = wo/rld
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
Ala*_*ore 23
我不会用split()
这项工作.匹配路径组件本身,而不是分隔符更容易.例如:
var subject = 'hello/wo\\/rld';
var regex = /(?:[^\/\\]+|\\.)+/g;
var matched = null;
while (matched = regex.exec(subject)) {
print(matched[0]);
}
Run Code Online (Sandbox Code Playgroud)
输出:
hello
wo\/rld
Run Code Online (Sandbox Code Playgroud)
下面的代码有点冗长,但是可以工作,并且通过不使用正则表达式来避免IE 的分割实现损坏的问题。
function splitPath(str) {
var rawParts = str.split("/"), parts = [];
for (var i = 0, len = rawParts.length, part; i < len; ++i) {
part = "";
while (rawParts[i].slice(-1) == "\\") {
part += rawParts[i++].slice(0, -1) + "/";
}
parts.push(part + rawParts[i]);
}
return parts;
}
var str = "hello/world\\/foo/bar";
alert( splitPath(str).join(",") );
Run Code Online (Sandbox Code Playgroud)