我正在尝试用定界符name\|dial_num|032\|0095\\|\\0099|\9925分割字符串|,但是它将跳过\|
我在以下链接中找到了解决方案:Javascript regexp that matches '.' not preceded by '\' (lookbehind alternative),但它也跳过了\\|

正确的结果必须是:[name\|dial_num,032\|0095\\,\\0099,\9925]

该规则是在\\\|\\\\\|等情况下,|仍然是有效的定界符,但在\\\\|甚至更多情况下不是这样。

任何帮助将不胜感激。

最佳答案

通常的解决方法是使用match代替split

> s = "name\\|dial_num|032\\|0095\\\\|\\\\0099|\\9925"
"name\|dial_num|032\|0095\\|\\0099|\9925"
> s.match(/(\\.|[^|])+/g)
["name\|dial_num", "032\|0095\\", "\\0099", "\9925"]


附带说明一下,即使JS确实支持lookbehinds,也不是解决方案,因为(?<!\\)|也会错误地跳过\\|

08-19 15:39