javascript语法错误:正则表达式无效
我正在用javascript编写一个应用程序。在我的应用程序中,有一个搜索字符串/正则表达式的选项。问题是,如果用户键入错误的值,match将返回javascript错误。 示例代码:javascript语法错误:正则表达式无效,javascript,regex,Javascript,Regex,我正在用javascript编写一个应用程序。在我的应用程序中,有一个搜索字符串/正则表达式的选项。问题是,如果用户键入错误的值,match将返回javascript错误。 示例代码: function myFunction() { var filter = $("#text_id").val(); var query = "select * from table"; var found; if (query.match(filter) !=
function myFunction() {
var filter = $("#text_id").val();
var query = "select * from table";
var found;
if (query.match(filter) != -1) {
found = true;
}
else{
found = false;
}
//Do something
}
jsfiddle:
输入字符串:sel/\
Match在模式末尾返回js错误-未捕获的语法错误:无效的正则表达式:/sel\/:\
有没有办法检查字符串是否为有效的正则表达式?使用try-catch语句:
function myFunction() {
var filter = $("#text_id").val();
var query = "select * from table";
try {
var regex = new RegExp(filter);
} catch(e) {
alert(e);
return false;
}
var found = regex.test(query);
}
也许您应该尝试在“var查询”之前的一行转义斜杠。
如果要在正则表达式中搜索字符串中的斜杠,则必须将其转义,否则正则表达式会将其作为保留字符读取。在这种情况下,实际上不需要正则表达式,但如果要避免表达式中的无效字符,则应将其转义:
RegExp.quote = function(str) {
return str.replace(/([.?*+^$[\]\\(){}|-])/g, "\\$1");
};
用法:
var re = new RegExp(RegExp.quote(filter));
如果没有正则表达式,您可以执行以下操作:
if (query.indexOf(filter) != -1) {
}
此外,您还可以避开特殊字符。try catch
是最快、最轻松的方法。在任何情况下,听从NHAHDH的建议都是一个好主意。在您的特定情况下,您必须转义转义符号“`”。一般来说,如果允许未验证的用户输入模式,则应该转义regexp中具有特殊含义的所有字符。如果您只是碰巧将数据存储在dom节点中,那么您可能不需要额外的努力就可以相处了。简单搜索。谢谢你指出这一点!这个答案似乎和这个没什么不同。
RegExp.quote = function allowSpecialSymbols(str) {
return str.replace(/([.?*+^$[\]\\(){}|-])/g, '');
};
const regExp = new RegExp(RegExp.quote('some \ string'), 'i');