【发布时间】:2018-07-29 14:07:31
【问题描述】:
以下正则表达式正确提取引号之间的路径。
const value = 'image-width("image-path.jpg")';
const result = value.match(/image-width\(['"]?(.+?)['"]?\)/)[1];
console.log(result); // image-path.jpg
但我需要让它更干燥,因为image-width 可能并不总是相同,所以我创建了一个函数,使image-width 成为一个变量
function getPath(value, wrapper) {
const regexString = `${wrapper}\\(['"]?(.+?)['"]?\\)`; // deliberate double back slash
const patternMatch = new RegExp(regexString, 'g'); // /image-width\(['"]?(.+?)['"]?\)/g (which is the same as the working regex value above
return value.match(patternMatch)[1]; // undefined
}
const path = getPath('image-width("image-path.jpg")', 'image-width'); // undefined
这不起作用,path 只是未定义。
【问题讨论】:
-
replace不会出现在给定代码中的任何地方 -
@GeorgeJempty 抱歉,我已将问题的最后一部分修改为
path只是未定义。 -
在我看来你得到 0 个匹配项,所以也许你的正则表达式是错误的? patternMatch 的值究竟是什么?
-
@AndréKool
patternMatch==/image-width\(['"]?(.+?)['"]?\)/g与上面的第一个工作正则表达式相同(减去末尾的g修饰符)
标签: javascript regex concatenation