- 此问题在此处已有答案**:
regex get anything between double curly braces(3个答案)
46分钟前就关门了。
我想使用正则表达式获取{{和}}之间的任何字符串。例如,{{user.email}}应返回user.email
。为了实现这一点,我编写了以下正则表达式:
const str = '{{user.email}}'
const regExp = /{{([^]*?)}}/g
const variableName = str.match(regExp)
console.log(variableName) // returns ['{{user.email}}'] only not 'user.email'
这是使用regexp的链接:
https://regex101.com/r/UdbrT9/1
我错过了什么吗?
3条答案
按热度按时间wpx232ag1#
从技术上讲,这是在使用lookaheads和lookbehinds。参见Lookahead and Lookbehind Zero-Width Assertions。
qmelpv7a2#
你为什么不用替换?
vatpfxk53#
你的正则表达式看起来是正确的。
但是,实际的“匹配”是完整的字符串。
您需要的是 * 第一个捕获的组 *(括号内)。
注意
RegExp::exec()
的使用(它包含完全匹配+捕获的组。不幸的是String::match()
没有,它只返回完全匹配。