javascript - 如何使用正则表达式在字符串中返回 2 个独立的 {{...}} block ?

标签 javascript regex

我有一个字符串:

string = "{{1:123}} asdfadfasdfdfdfsaf {{1212:}}"

这是我当前的正则表达式模式:

var pattern = /[{{].*[}}]/;

当使用 match 时,我得到:

string.match(pattern)
//returns ["{{1:123}} asdfadfasdfdfdfsaf {{1212:}}"]

如何只获取第一个括号 block ,或者更好的是,获取一个包含每个括号 block 的数组?我理想的返回结果是:

["{{1:123}}", "{{1212:}}"]

最佳答案

您需要删除方括号并使用惰性量词:

var pattern = /{{.*?}}/g;

参见 demo

[{{] 只匹配一个 {,因为它是一个字符类。与[}}]相同,匹配1个}。查看更多关于 character classes .

.* 匹配除换行符之外的尽可能多的任何字符,您将获得从第一个 {{ 到最后一个 }} 的子字符串 如果你使用它。惰性量词将匹配第一个 }}。另请参阅 What do lazy and greedy mean in the context of regular expressions特别是Lazy Quantifier Solution .

var re = /{{.*?}}/g; 
var str = '{{1:123}} asdfadfasdfdfdfsaf {{1212:}}';
console.log(str.match(re));
 

关于javascript - 如何使用正则表达式在字符串中返回 2 个独立的 {{...}} block ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38401320/

相关文章:

javascript - 地理位置自动填写地址表

javascript - 选择第一个选择框后,根据第一个选择结果显示第二个结果。但 POST 时没有得到任何结果

javascript - ExtJS 如何将按钮图标设置为内存中的图像(而不是磁盘上的图像)?

javascript - 在 Firefox 中打印 iframe 时如何打开打印预览对话框?

regex - Postgres 中的正则表达式查找和替换

regex - 匹配序列化字符串

regex - 使用 Scala 模式匹配时工作正则表达式失败

javascript - 测试 Angular 服务解决错误回调中的 promise

java - 奇怪的 Java 替换优先

javascript - 针对 RegExp 的 Google Closure 编译器警告