【发布时间】:2018-12-28 13:14:47
【问题描述】:
我很难弄清楚如何转义我的正则表达式。我已经用这个函数逃脱了它:
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);
【问题讨论】:
-
在您的转义函数中,您转义了稍后拆分的点。最好将转义应用于拆分的元素或从您的转义函数中删除将用于拆分的字符。
-
您最终传递给
new RegExp()的字符串是^(?=.*\*Ubuntu\)(?=.*18\*),它在第一组的结束)之前有一个杂散的反斜杠。 -
您可以尝试额外的步骤:先拆分,然后独立转义部分,然后加入。
-
所以我不需要在我的函数中转义它?
标签: javascript jquery regex