2 回答
TA贡献1951条经验 获得超3个赞
match问题是和之间的空格数量不匹配data。
您可以转换match为允许可变数量空白的正则表达式。
第一个match.replace()用于转义字符串中的所有特殊正则表达式字符,第二个将空格转换为,\s+以便匹配任意数量。
data = `if (res) {
new PNotify({
title: TAPi18n.__('success'),
text: TAPi18n.__('image_uploaded'),
type: 'info',
styling: 'bootstrap3'
});
}
if (err) {
return new PNotify({
title: TAPi18n.__('error'),
text: err,
type: 'error',
styling: 'bootstrap3'
});
}`;
match = `new PNotify({
title: TAPi18n.__('error'),
text: err,
type: 'error',
styling: 'bootstrap3'
})`;
re = new RegExp(match.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&').replace(/\s+/g, '\\s+'));
result = data.match(re);
console.log(result && result.index);
TA贡献1875条经验 获得超3个赞
您需要在比较它们之前对字符串进行规范化
这是一个简单的函数,可以按行拆分字符串并删除每行的空格,然后再将所有内容重新组合在一起
function normalizeString(str){
return str.split('\n').map(e => e.trim()).join('')
}
输出:
data = `if (res) {
new PNotify({
title: TAPi18n.__('success'),
text: TAPi18n.__('image_uploaded'),
type: 'info',
styling: 'bootstrap3'
});
}
if (err) {
return new PNotify({
title: TAPi18n.__('error'),
text: err,
type: 'error',
styling: 'bootstrap3'
});
}`;
/*not found...*/
match = `new PNotify({
title: TAPi18n.__('error'),
text: err,
type: 'error',
styling: 'bootstrap3'
})`;
// normalize strings
var normalizedData = data.split('\n').map(e => e.trim()).join('')
var normalizedMatch = match.split('\n').map(e => e.trim()).join('')
console.log(normalizedData)
console.log(normalizedMatch)
console.log(normalizedData.indexOf(normalizedMatch));
添加回答
举报