我很难弄清楚如何转义正则表达式。我已经使用此功能对其进行了转义:
function escapeRegExp(string) {
return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&')
}
但是我仍然有错误:
未捕获的SyntaxError:无效的正则表达式: 正则表达式:未终止的组
function escapeRegExp(string) {
return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&')
}
var str = "ubuntu-18.10-desktop-amd64.iso.torrent"
var search = "*Ubuntu.18*"
search = escapeRegExp(search);
var re = new RegExp('^(?=.*' + search.split(/[\s,_.:-]+/).join(')(?=.*') + ')', 'gi');
var result = re.test(str);
console.log(result);
答案 0 :(得分:1)
将*
添加到字符类中,并在其前面加上可选的反斜杠:
search.split(/\\?[\s,_.:*-]+/).join(')(?=.*')
如果没有上述方法,上述方法将在找到一个句点的\.
处分割,并使\
完整无缺,而后来在join方法中)
之前会导致错误。