正则表达式等效于用于数据验证的其他数据类型

时间:2012-09-21 20:02:43

标签: regex validation data-quality

我正在为数据库创建数据质量框架,该数据库查看每种数据类型的单个单元格,并查看它们的值是否可接受。

对于数据类型字符串: 我只是使用正则表达式来定义什么是有效的

对于其他数据类型(Integer,Timestamp,Boolean,TimeDelta,Float,...): 我没有任何标准方法来记录有效的内容

是否有其他数据类型的正则表达式?和IntegerRegEx一样? 例如,假设我有一个必须包含0到65535之间的数字的字段,或者我有一个只能包含奇数的字段......

如果这个IntegerRegEx也是一个字符串(就像普通的RegEx一样)会很好,所以我可以在同一个表中存储IntRegEx' s和StringRegEx。

提前致谢!

2 个答案:

答案 0 :(得分:0)

我想根据您编程的语言,比如PHP,您可以存储数学表达式(字符串),例如$x >= 0 && $x <= 65535$x % 2 == 1

使用正则表达式,你会写这样的东西,对吧?

if (!preg_match($regexFromDb, $fieldValueFromDb)) {
    // validation fails
}

因此,使用数学表达式,你会做同样的事情,例如

$x = $fieldValueFromDb;
if (!eval("return $mathExprFromDb")) {
    // validation fails
}

这只是示例代码。当然,您应该保护您的代码免受运行任意存储的可执行代码的危险,以及防止脚本崩溃的乱码表达。

我认为这就像你要接近的那样,因为你寻求的“IntegerRegEx”已经有了一个名字......数学。 ;)

答案 1 :(得分:0)

如果你想要一个字符串和正则表达式的东西,你可以使用正则表达式。只需要一种将每种类型转换为字符串的标准方法,并针对字符串形式编写正则表达式。对某些人来说可能很尴尬,而对其他人来说容易出错,但这很简单,并且不涉及创建自己的表达式语言或直接从数据库加载代码并对其进行评估。