我正在尝试用定界符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,也不是解决方案,因为
(?<!\\)|
也会错误地跳过\\|
。