我正在尝试使用模式从字符串动态获取单词。模式和输入看起来像这样
var pattern = "hello this is %var% using %var%";
var input = "hello this is nick using javascript";
现在我希望能够有一个像这样的变量数组
["nick", "javascript"]
最佳答案
应该这样做:
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
正则表达式的结果,其中删除了第一个元素(它将是完整的匹配字符串)。