转义,但仍为“未捕获的SyntaxError:无效的正则表达式:regex:未终止的组”

时间:2018-12-28 13:14:48

标签: javascript jquery regex

我很难弄清楚如何转义正则表达式。我已经使用此功能对其进行了转义:

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);

1 个答案:

答案 0 :(得分:1)

*添加到字符类中,并在其前面加上可选的反斜杠:

search.split(/\\?[\s,_.:*-]+/).join(')(?=.*')

如果没有上述方法,上述方法将在找到一个句点的\.处分割,并使\完整无缺,而后来在join方法中)之前会导致错误。