我有这种表达方式:
var string = [a][1] [b][2] [c][3] [d .-][] [e][4]
我想匹配第四个元素[d .-][]
,它可能包含第一对括号内的任何字符(字母,数字,标点符号等),但第二对括号仍为空。其他元素,例如[a][1]
,可以包含任何字符,但它们在第二对括号内有一个数字。
我试过了:
string.match(/\\[[^]+]\\[ ]/);
但太贪心了。
任何帮助将不胜感激。
答案 0 :(得分:3)
我想匹配第四个元素[d .-] [],它可能包含第一对括号内的任何字符(字母,数字,标点符号等),但第二对括号仍为空
string.match(/\[[^\]]*\]\[\]/)
应该这样做。
要打破它,
\[
匹配文字左方括号
[^\]]*
匹配除右方括号以外的任意数量的字符
\]
匹配文字右方括号,
\[\]
匹配两个字符序列[]
,方括号中间没有任何内容。
要回答关于贪婪的问题,您可以通过添加问号[^]+
来使贪婪的匹配[^]+?
非贪婪。您应该知道[^]
在IE中不起作用。为了匹配任何UTF-16代码单元,我倾向于使用[\s\S]
,它更冗长,但适用于所有浏览器。