pl/sql 正则表达式验证

Posted

技术标签:

【中文标题】pl/sql 正则表达式验证【英文标题】:pl/sql regex verification 【发布时间】:2011-07-19 18:59:44 【问题描述】:

如何验证仅允许数字字母和“.”、“/”、“_”、“-”等字符且仅允许 40 个字符的字符串。

我正在做类似REGEXP_LIKE(path, '[a-zA-Z0-9_./-]2,40$') 的操作,但效果不佳。

谁能帮我解决这个正则表达式?

【问题讨论】:

【参考方案1】:

嗯,它不会限制为 40 个字符,因为它没有锚定到字符串的开头。试试:

REGEXP_LIKE(path, '^[a-zA-Z0-9_./-]2,40$')

除此之外,我看不出有什么明显的错误,当然假设您的意思是最小长度为 2 个字符。

【讨论】:

如果没有 ^ 锚,它不会限制为 40,因为这样它就会匹配字符串末尾的 40 个字符。在此之前可能会有 5K 的乱码,而正则表达式仍然会找到匹配项。【参考方案2】:

可能需要添加行首特殊字符^,即:^[a-zA-Z0-9_./-]2,40$

【讨论】:

以上是关于pl/sql 正则表达式验证的主要内容,如果未能解决你的问题,请参考以下文章

PL/SQL 正则表达式检查

正则表达式背后的 pl/sql 否定查看

PL/SQL 中的正则表达式

在 oracle 中使用正则表达式查找 POBOX - PL/SQL

Python 正则表达式拆分 PL/SQL 指令

PL/SQL Oracle 正则表达式对于零的出现不起作用