验证REGEX输入,最好使用Regex



我希望让(admin)用户输入一些模式匹配字符串,以使我的网站的不同用户访问不同数据库行,具体取决于特定字段中的文本是否是否该行与该用户的模式匹配字符串匹配。

我决定将正则态度直接集成到MySQL语句中。

我真的不知道从哪里开始验证字符串是有效的正则表达式,并具有正则表达式。

我做了一些搜索类似问题,看不到一个问题。Google产生了可笑的答案,可悲的是没有什么帮助。

人们是在野外做的还是避免?

是否可以使用简单的正则表达式进行,或者所有有效的正则表达式的集合需要限于可用的子集?

验证正则是一个非常复杂的任务。正则是无法做到的。

一种简单的方法是捕获尝试运行SQL语句时发生的任何错误,然后向用户报告适当的错误。

我假设" admin"在这里是值得信赖的用户。给不受信任的用户能够输入REGEXES的能力是非常危险的,因为它可以轻松地使用正则构造的正则攻击系统,该正则构造需要很长时间才能执行。那是在您甚至开始担心Bobby Tables问题之前。

在JavaScript中:

input = "hello**";
try{
        RegExp(input);
        // sumbit the regex
}catch(err){
        // regex is not valid
}

您无法验证字符串包含具有正则表达式的有效正则表达式。但是您可能会妥协。

如果您只需要在字符串中使用正则表达式中有效的字符,则可以使用正则是:

^[dw -}{)(+*?|.$^[]\]*$

这可能取决于应用程序。

最新更新