我有这个正则表达式:
let regex = /(?=.|["])/;
test = ""test.test""
test.split(regex)
输出:
[""test", ".test", """]
而我想要
[""", "test", ".test", """]
我不明白为什么它拆分第二个双引号而不是第一个双引号
附言:必须保持像那样的".test"(而不是"."test"(
这不是纯正则表达式解决方案,但您可以将此正则表达式与捕获组一起使用,并过滤空结果:
const str = '"test.test"';
var arr = str.split(/(")|(?=.)/).filter(Boolean)
console.log(arr)
方法问题:
您的正则表达式使用了一个前瞻性断言,该断言可以缩短为:
(?=[."])
这意味着匹配下一个位置有一个点或"
的零宽度匹配。
由于您的输入在开始时有"
,因此它匹配位置0,然后是点之前的位置,最后是最后一个闭合"
之前的位置(总共3个匹配(。