我在,
中有以下正则表达式进行拆分操作,因为我无法在后面找一个负面的查找字符串中的任何分隔符\
,而不是由一个或多个进行转义[^\\],
的字符。
\
正则表达式可以很好地找到逗号没有前进到hello\,there,are
的位置,但也找到将逗号作为匹配字符进行匹配的字符,从而错误地拆分字符串。
例如,如果我有字符串
e,
结果是,
与我的正则表达式匹配,而不仅仅是[hello\,ther] [are]
。使拆分字符串数组读取
{{1}}
为什么我使用的正则表达式一直在找到逗号和正在进行的字符而不是只匹配逗号?
答案 0 :(得分:3)
你不能在这里使用split
,因为你需要JS regex不支持的lookbehind。使用匹配适当的正则表达式。如下所示:
/(?:[^\\,]|\\.)+/g
请参阅regex demo。
模式匹配除+
和,
(\
)或([^\\,]
)之外的任何字符的1个或多个(|
)序列任何转义使用\\.
JS演示:
var regex = /(?:[^\\,]|\\.)+/g;
var str = "hello\\,there,are";
var res = str.match(regex);
console.log(res);