我正在尝试在字符串中找到一个模式,该模式的值以${
开头,以}
结尾。大括号之间会有一个单词,但我不知道它是什么单词。
这就是我的\$\\{[a-zA-Z]\\}
${a}
有效,但${aa}
没有。看起来它只是在寻找一个角色。
我不确定我做错了什么,或者如何解决它,并感谢任何人都可以提供帮助。
答案 0 :(得分:2)
我认为这可以帮到你
var str = "The quick brown ${fox} jumps over the lazy ${dog}";
var re = /\$\{([a-z]+)\}/gi;
var match;
while (match = re.exec(str)) {
console.log(match[1]);
}
单击运行代码段并检查开发人员控制台的输出
"fox"
"dog"
<强>解释强>
+
表示匹配上一个字词中的一个或多个 - 在此示例中,匹配[a-z]
中的一个或多个(...)
括号将“捕获”匹配,以便您可以实际使用它 - 在我的示例中,我只是使用console.log
来输出它i
修饰符(在正则表达式的末尾)表示执行大小写 i nsensitive match g
修饰符表示匹配目标字符串中此正则表达式的所有实例while
循环将继续针对re.exec
找到的每个匹配项运行。一旦re.exec
无法与另一个实例匹配,它将返回null
并且循环将退出。其他信息
使用上面的代码尝试console.log(match)
。每个匹配都带有其他有用的信息,例如匹配发生的字符串索引
<强>陷阱强>
这不适用于嵌套的 $ {} 集
例如,此正则表达式 <{1}}
答案 1 :(得分:1)
答案 2 :(得分:1)
你很亲密!
你需要的只是使用+
告诉表达式将会有一个或多个前面的内容(在本例中为[a-zA-Z]
),如下所示:
\${[a-zA-Z]+}
答案 3 :(得分:0)
您需要使用*
(零或更多)或+
(一个或多个)。因此[a-zA-Z]
为[a-zA-Z]+
,即1个或多个字母。整个正则表达式看起来像:
\$\{[a-zA-Z]+\}