需要帮助编写正则表达式模式

时间:2015-06-25 17:30:37

标签: javascript regex

我正在尝试在字符串中找到一个模式,该模式的值以${开头,以}结尾。大括号之间会有一个单词,但我不知道它是什么单词。

这就是我的\$\\{[a-zA-Z]\\}

${a}有效,但${aa}没有。看起来它只是在寻找一个角色。

我不确定我做错了什么,或者如何解决它,并感谢任何人都可以提供帮助。

4 个答案:

答案 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)

正则表达引用和测试的好网站是http://rubular.com/

看起来你需要添加一个+,它告诉正则表达式查找一个或多个字符。

尝试:\${[a-zA-Z]+}

答案 2 :(得分:1)

你很亲密!

你需要的只是使用+告诉表达式将会有一个或多个前面的内容(在本例中为[a-zA-Z]),如下所示:

\${[a-zA-Z]+}

答案 3 :(得分:0)

您需要使用*零或更多)或+一个或多个)。因此[a-zA-Z][a-zA-Z]+,即1个或多个字母。整个正则表达式看起来像:

\$\{[a-zA-Z]+\}