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