如何允许最终用户使用regex创建验证规则
How allow end user to create validation rules using regex?
在我的应用程序中,我允许用户使用charter '*'
、'?'
创建一些验证规则,其中'*'
表示多个charter,'?'
表示一个字符。例如,用户可以编写"*Ma?s*"
,因此它应该匹配类似于"ajdg adbf MaKs sjklfd"
的内容。对不起,这个例子,但我什么都没想,可能用户输入了更复杂的规则。
我通过将规则和匹配字符串发送到SQL Server数据库来解决这个问题,并用'%'
替换每个'*'
,用'_'
替换每个'?'
,使用类似的条件,效果很好,但用户可以输入很多验证规则和很多匹配,所以有很多数据库操作,所以我想我晚上在客户端使用新的c++11正则表达式来做这件事,我搜索了很多,读了很多文章,但都没有答案。
那么这可以在regex中完成吗?如何?
如果要创建正则表达式,只需要将规范转换为正则表达式。为此,只需替换:
*
到.*
(或.+
,取决于您是否需要至少一个字符(?
由.
注意:
.
匹配任何字符。如果您只查找字母,可以使用[a-zA-Z]
替换.
。对于数字,d
。对于字母和数字、[a-zA-Z0-9]
等,
您可以通过用.*
替换*
,用.
替换?
来执行此操作。然而,请注意,我遇到的大多数C++<regex>
实现并不是真正的功能性实现,因此目前您需要依赖Boost.regex
。
顺便说一句,请注意,您需要首先对用户输入进行消毒。否则,恶意用户可能会对您的系统造成非常糟糕的影响。
相关文章:
- 如何创建一个CMake变量,除非显式重写,否则使用默认值
- 使用std::multimap迭代器创建std::list
- 在全局变量中保存类的实例以重新创建类(创建"backup")
- 使用CMake创建QML插件
- 如何在c++中为模板函数实例创建快捷方式
- 在C++中,是否可以基于给定的标识符创建基类的新实例,反之亦然
- 创建一个函数以在输入为负数或零时输出字符串.第一次执行用户定义的函数
- OpenCV EqualizeHist()从彩色图像创建黑白图像
- 试图在visual studio上用C++创建一个桌面应用程序
- std::threads可以从Windows DLL中的全局变量创建/销毁吗?
- 如何在C++20中创建模板别名的推导指南
- 如何为模板化对象创建模板向量?VS正在投掷C3203
- 如何创建一个空的全局类并在启动时实例化它
- 无法创建抽象类的实例
- 链接到自行创建的dll失败
- 使用Regex解析cpp中的字符串并创建映射
- #include < regex.h> 用于创建正确正则表达式的问题
- 应该如何使用C++11 Regex从存储在文本文件中的表中创建变量
- 在c++中使用regex库创建词法分析器
- 如何允许最终用户使用regex创建验证规则