如何允许最终用户使用正则表达式创建验证规则?

时间:2013-02-26 09:30:03

标签: c++ regex c++11

在我的应用程序中,我允许用户使用租船人'*''?'创建一些验证规则,其中'*'表示许多租船人,'?'表示一个字符,例如用户可以写"*Ma?s*"所以它应该匹配这样的"ajdg adbf MaKs sjklfd"对不起这个例子,但我没有任何想法,也许用户输入更复杂的规则。

我通过将规则和匹配字符串发送到SQL Server数据库并将每个'*'替换为'%'并将每个'?'替换为'_'来解决问题并使用类似条件并且工作得很好,但是有很多用户可以输入的验证规则和很多匹配,所以有很多数据库操作,所以我想我晚上使用新的c ++ 11正则表达式来做客户端,我搜索很多,阅读了很多文章,但没有答案。

这可以在正则表达式中完成吗?怎么样?

2 个答案:

答案 0 :(得分:2)

如果要创建正则表达式,只需将规范转换为正则表达式即可。为此,只需替换:

    {li> * .*(或.+,具体取决于您是否至少需要一个角色)
  • ? .

注意:

.匹配任何字符。如果您只是在寻找信件,可以使用.替换[a-zA-Z]。对于数字,\d。对于字母和数字,[a-zA-Z0-9]

答案 1 :(得分:1)

您可以将*替换为.*,将?替换为.。但是请注意,我遇到的大多数C ++ <regex>实现都没有真正的功能,所以目前你需要依赖Boost.regex

另外,请注意您需要首先清理用户输入。否则,恶意用户可能会对您的系统造成非常糟糕的事情。