我试图使用模式动态地从字符串中获取单词。模式和输入看起来像这样
var pattern = "hello this is %var% using %var%";
var input = "hello this is nick using javascript";
现在我希望能够拥有像这样的变量数组
["nick", "javascript"]
答案 0 :(得分:2)
这应该这样做:
var pattern = "hello this is %var% using %var%";
var input = "hello this is nick using javascript";
var re = new RegExp(pattern.replace(/%var%/g, '([a-z]+)'));
var matches = re.exec(input).slice(1); // <-- ["nick", "javascript"]
变量re
是RegExp
,其模式为pattern
变量,每个%var%
实例都替换为小写字母的捕获组(必要时扩展)
matches
是在re
字符串上执行的input
正则表达式的结果,其中第一个元素被删除(这将是完全匹配的字符串)。
答案 1 :(得分:0)
var pattern = "hello this is %var% using %var%";
var input = "hello this is nick using javascript";
var outputArr = [];
pattern.split(" ").forEach(function (e, i){
e === "%var%" ? outputArr.push(input.split(" ")[i]) : "";
});
outputArr是所需的数组。