此代碼:JS正則表達式匹配排除引號內
var value = 'one.two[0]["three.four"]';
console.log(value.split(/(?:\.)|(?=\[")/));
產生以下數組:
0: one
1: two[0]
2: ["three
3: four"]
如何修改它來排除引號內的點? 我希望得到如下的輸出:
0: one
1: two[0]
2: ["three.four"]
此代碼:JS正則表達式匹配排除引號內
var value = 'one.two[0]["three.four"]';
console.log(value.split(/(?:\.)|(?=\[")/));
產生以下數組:
0: one
1: two[0]
2: ["three
3: four"]
如何修改它來排除引號內的點? 我希望得到如下的輸出:
0: one
1: two[0]
2: ["three.four"]
您可以.
後添加負向前查找添加里面的「排除點引號「的邏輯。我們忽略開頭引用和前瞻性,看看我們是否在引用字符串內。 (其中我們假設這裏不包含像轉義引號\"
任何古怪)
var value = 'one.two[0]["three.four.five"]';
console.log(value.split(/\.(?![\w.]*")|(?=\[")/));
'\。(?!\ w *「\])'。 –
看來你可以使用['str.match( /\w+(?:\[[^\][]*])?|\[[^\][]*]/g)'](https://regex101.com/r/gNa9ed/1)甚至是'\ w +(?:\ [[^ \] [] *])?| \ [「。*?」] | \ [[^ \] [] *]'。 –