javascript - 匹配大括号之间的特定部分

标签 javascript regex

我有以下示例字符串。

Hello {{bob.name}} bob.name {{john.name}}

我已经突出显示了我想要匹配的部分。 它必须位于两端的两个大括号之间,并且必须是点之前的第一个单词。

我尝试过这个正则表达式[^{{}}]+(?=\}}),但它匹配大括号之间的所有内容,如下所示

Hello {{bob.name}} bob.name {{john.name}}

如果我可以提供一个用于查找名称的变量,那就太好了。

最佳答案

您可以将此正则表达式与否定字符类、前瞻和捕获组一起使用:

/{{([^}.]+)(?=(?:(?!}}).)*}})/

RegEx Demo

  • ([^}.]+):[^}.]+ 匹配非点且非 } 的字符>。 (...) 在第 1 组中捕获。
  • (?=(?:(?!}}).)*}}) 是一个前瞻,断言我们前面有一个 }}

要替换 {{...}} 内的 bob,请使用:

repl = str.replace(/({{)bob(?=(?:(?!}}).)*}})/gi, '$1newVal'); 

要匹配 {{...}} 内的 bob 使用:

{{bob(?=(?:(?!}}).)*}})

关于javascript - 匹配大括号之间的特定部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48319709/

相关文章:

JAVA 检查句子中以正则表达式模式结尾的多个字符串

html - 使用正则表达式查找嵌套的 XML 标记

regex - Grep 表达式排除了我想要的一些匹配项

javascript - Cordova CORS 调用无法正常工作

javascript - 从元素中删除类而不影响正在进行的 css 转换

javascript - Google Apps 脚本查找正文中的 URL 并将其格式化为超链接

python - 调用 re.compile 时什么属性返回正则表达式?

c# - 帮助驾驶执照号码验证正则表达式

计算器中的 Javascript 乘法问题

javascript - 更改另一个页面的元素属性