【发布时间】:2020-10-13 15:36:23
【问题描述】:
我想验证 DN 代码在哪里
所有段必须按顺序出现:cn=,ou=,o=,o=swift 逗号 (,) 必须分隔所有段。
最多 100 个小写字符
不允许有空格
段数:最少两个,最多 10 个
细分要求
Segment 遵循 BIC 格式验证,但允许使用 8 个字符。
段由以下字符组成:
最少两个字符。
最多 20 个字符。
字母数字字符:a 到 z(仅小写), 0到9, 和特殊字符'-' 如果段具有值,因为只有数字将包含最多两位数。
我已尝试使用以下正则表达式:
^((CN=([a-zA-Z0-9-,])))?((((?:CN|OU)=[a-zA-Z0-9-,]+,?) +),)?((o=([a-zA-Z]{4})([a-zA-Z]{2})(([0-9a-zA-Z]{1})([ 0-9a-np-zA-NP-Z]))(|([xX]{3})|)+,?)+)?((o=([swift])+,{1})+) $
但它使用以下代码: cn=harsha,ou=treasury,ou=treasury,o=dazppxxx,o=swift,
但没有
cn=test,ou=treasury,ou=treasury,o=dazppxxx,o=swift"
它也接受
cn=test,cn=test,ou=treasury,ou=treasury,o=dazppxxx,o=swift," 无效。
请帮忙!!!
【问题讨论】:
-
为什么第三个例子无效?根据您规定的规则,这似乎是有效的?
-
因为cn和swift的值是重复的……不应该重复
-
书面规则不明确,不符合提供的正则表达式。根据您的描述,我想出了这个
^CN=((?=\D*\d{0,2}[^\d,])[a-zA-Z0-9-]{2,8}),(OU=((?=\D*\d{0,2}[^\d,])[a-zA-Z0-9-]{2,8}),){2,10}(O=((?=\D*\d{0,2}[^\d,])[a-zA-Z0-9-]{2,8}),){1,9}o=swift,$,但由于要求不完整,它很可能是不完整的。
标签: javascript html regex regex-greedy