鍍金池/ 問答/HTML/ javascript正則問題

javascript正則問題

我想要匹配不在'[]'內(nèi)的 ,

var strs='a,v,[b,c,e],d'.split(/,(?!([^\]\[]+]))/)
console.log(strs)

結(jié)果是這樣

[ 'a', undefined, 'v', undefined, '[b,c,e]', undefined, 'd' ]

undefined是哪來的

回答
編輯回答
撥弦

應(yīng)該是 ,

'a,v,[b,c,e],d'.split(/,(?![^\]\[]+])/)

2017年10月16日 04:11
編輯回答
淡墨

摘自MDN

(?:x)

匹配 'x' 但是不記住匹配項。這種叫作非捕獲括號,使得你能夠定義為與正則表達式運算符一起使用的子表達式。來看示例表達式 /(?:foo){1,2}/。如果表達式是 /foo{1,2}/{1,2}將只對 ‘foo’ 的最后一個字符 ’o‘ 生效。如果使用非捕獲括號,則{1,2}會匹配整個 ‘foo’ 單詞。

這里由于使用括號產(chǎn)生了多余的捕獲,改成這樣就行了

var strs='a,v,[b,c,e],d'.split(/,(?!(?:[^\]\[]+]))/)
2017年2月3日 20:50
編輯回答
淺時光
'a,v,[b,c,e],d'.replace(/\[.*\]/g,"").match(/,/g)
2018年7月7日 15:34
編輯回答
妖妖
var str = 'a,v,[b,c,e],d'.replace(/\[.*\]/g,'');
console.log(str);//a,v,,d
2018年7月23日 06:55
編輯回答
掛念你
var strs='a,v,[b,c,e],d'.split(/,(?![^\]\[]+])/);

圖片描述

undefine是由于你用了捕獲組導(dǎo)致的,去掉()就行了

2018年9月15日 11:37