Javascript正则表达式匹配问题

标签 javascript regex

我的句子结构类似于

[word1]{word2} is going to the [word3]{word4}

我正在尝试使用 JavaScript 正则表达式来匹配稍后替换的单词。为此,我正在努力获取以下多维数组:

[["word1", "word2"],["word3","word4"]]

我目前正在使用此正则表达式来完成这项工作:

\[(.*?)\]\{(.*?)\}

但是,它会得出如下结果:

["[word1]{word2}", "word1", "word2"]

或更糟。我不太明白为什么,因为这个正则表达式似乎在 Ruby 中工作得很好,而且我并不是一个真正了解正在发生的事情的正则表达式专家。我只是好奇是否有任何 javascript rege 专家的答案非常明确,并且可以指导我了解这里发生的事情。我感谢任何帮助!

编辑:

这是我用来测试匹配的代码:

function convertText(stringText) {
     var regex = /\[(.*?)\]\{(.*?)\}/;
    console.log(stringText.match(regex));
}

最佳答案

我假设您正在使用正则表达式的 exec 方法。

你所做的几乎是正确的。 exec 返回一个数组,其中第一个元素是整个匹配项,其余元素是组。您只需要索引 1 和 2 处的元素。尝试类似的操作,但当然将结果存储到数组中而不是使用警报:

var string = '[word1]{word2} is going to the [word3]{word4}';
var pattern = /\[(.*?)\]\{(.*?)\}/g;
var m;
while(m = pattern.exec(string)) {
    alert(m[1] + ',' + m[2]);
} 

这会显示两个警报:

  • 单词1,单词2
  • 单词3,单词4

关于Javascript正则表达式匹配问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2382712/

相关文章:

javascript - http请求完成后如何从angularJS服务返回对象?

javascript - 正则表达式检查 & ( ) 和重复字母

ruby-on-rails - 如何验证字符串的第一个字符不是整数?

javascript - 数组在任何给定时间仅限于一项的问题

javascript - 令人困惑的逻辑运算 if(null)

javascript - 使用 jQuery 访问 Flash 函数

Javascript 正则表达式匹配每两组数字 > 字母和数字?

python - 通过函数 findall 获取唯一字符串

python - 如何从文件加载多个正则表达式模式并匹配给定的字符串?

javascript - 是否有组织 Javascript 代码的最佳方法?