【发布时间】:2011-04-29 14:57:22
【问题描述】:
在过去的 4 小时内,我可能已经阅读了 20 多种不同风格的同一个问题,但没有得到积极的结果。
我正在尝试通过 Oracle APEX 应用程序中的正则表达式验证密码,据我了解,该应用程序使用正则表达式的 POSIX 实现,这显然是比大多数正则表达式版本更“严格”的引擎??? (我还不能具体验证这一点,但我的测试会让我相信这是真的)
最终我需要验证一个密码:
- 长度介于 14 到 18 个字符之间
- 至少有 1 个小写字符
- 至少有 1 个大写字符
- 至少有 1 位数字
- 至少具有以下特殊字符之一#$^+=!*()@%&
我尝试了几个正则表达式,即使是最简单的形式,它们也不能在 Apex 实现中工作。
例如:
^\w*(?=\w*\d)(?=\w*[a-z])(?=\w*[A-Z])\w*$
理论上应该接受任何输入字符串,只要它至少有 1 个数字、1 个大写字母和 1 个小写字符。
只需输入“wS1”即可使用Javascript RegExp: Regular Expression Tester。它将字符串作为匹配项返回。
如果我使用相同的 RegExp 作为正则表达式验证器并在字段中输入“wS1”,则验证失败。
在这个特定的正则表达式实现中我是否缺少一些我需要注意的东西?
编辑
由于 Apex 的广泛验证选项,我暂时放弃了正则表达式。
它具有内置功能,例如“[表达式1] 中的项目必须包含[表达式2] 中列出的至少一个字符”。不幸的是,它需要我编写多个验证(我现在最多 6 个)。
从好的方面来说,它允许我显示多个错误消息,并且当用户更新他们的新密码时,错误消息会在用户满足要求时被删除......
总而言之,这对我来说仍然是一种 hack,我仍然有兴趣了解正则表达式背后的秘密。
【问题讨论】:
标签: regex posix oracle-apex