我的句子结构类似于
[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/