Javascript 正则表达式查找特殊字符之间的文本
伙计,我很困惑。我已经看了一百万个这样的问题,但即使我简化了,也没有一个答案是有效的 我想捕获Javascript 正则表达式查找特殊字符之间的文本,javascript,regex,Javascript,Regex,伙计,我很困惑。我已经看了一百万个这样的问题,但即使我简化了,也没有一个答案是有效的 我想捕获$[和]之间的文本 为什么\$\[.\]不起作用?即使我遵循方括号的指南,它也不起作用 您希望使用以下正则表达式在输入字符串中获取多个匹配项: \$\[(.*?)\] 请注意,捕获组是(.*)。问号使匹配不贪婪,这意味着它将在命中最近的结束括号后停止 var string = "stuff $[stuff] hello world $[123] blah [abc] $[def] blah"; v
$[
和]
之间的文本
为什么\$\[.\]
不起作用?即使我遵循方括号的指南,它也不起作用
您希望使用以下正则表达式在输入字符串中获取多个匹配项:
\$\[(.*?)\]
请注意,捕获组是(.*)
。问号使匹配不贪婪,这意味着它将在命中最近的结束括号后停止
var string = "stuff $[stuff] hello world $[123] blah [abc] $[def] blah";
var regex = new RegExp(/\$\[(.*?)\]/g);
var myArray;
while ((myArray = regex.exec(string)) != null) {
alert(myArray[1])
}
如果您使用了未删节的(.*)
作为捕获组,则只有一个匹配项从第一个开始括号开始,以最后一个结束括号结束;显然不是你想要的
此处演示:
与子字符串一起使用:
/\$\[(.*)\]/
。并与exec一起应用
var res=/\$\[(.*)\]/g.exec(“$[和]”);
console.log(res)
console.log(res[1])
这有一个错误,当它在末尾发现两个括号时,它没有打印出正确的字符串。所以,$[[hey]]
变成了[hey
。有没有办法修复这个行为?@Yeats如果你有嵌套的括号,那么你应该使用一个解析器。这个正则表达式中没有“bug”。在我看来,这个问题很严重。
var string = "stuff $[stuff] hello world $[123] blah [abc] $[def] blah";
var regex = new RegExp(/\$\[(.*?)\]/g);
var myArray;
while ((myArray = regex.exec(string)) != null) {
alert(myArray[1])
}