如何匹配由至少 4 个唯一数字组成的数字
How to match number composed of at least 4 unique digits
我需要(不幸的是,它必须在数据库级别上完成——实际上是 MariaDB)使用正则表达式数字来验证数字必须由至少 4 个唯一数字组成的规则。
我需要完成的示例:
112233441122 is OK (made only from 1,2,3,4)
1234564222134 is OK (6 different digits)
122102111 is bad (3 digits only: 0,1,2)
91511201 is OK (5 digits)
我很乐意分享我的尝试,但我现在不擅长反向引用,而且我的任何微不足道的尝试都没有更接近匹配由两个不同字符组成的单词。
我也试过用户定义的函数来计算字符串中的字符,但是它们很慢而且不像使用 REGEX 那样优雅。
假设您正在使用支持反向引用和占有匹配的正则表达式引擎,您可以使用:
^(\d)*+(\d)(?:|)*+(\d)(?:||)*+\d+$
同样可以使用原子组来完成:
^(\d)(?>*)(\d)(?>(?:|)*)(\d)(?>(?:||)*)\d+$
我需要(不幸的是,它必须在数据库级别上完成——实际上是 MariaDB)使用正则表达式数字来验证数字必须由至少 4 个唯一数字组成的规则。
我需要完成的示例:
112233441122 is OK (made only from 1,2,3,4) 1234564222134 is OK (6 different digits) 122102111 is bad (3 digits only: 0,1,2) 91511201 is OK (5 digits)
我很乐意分享我的尝试,但我现在不擅长反向引用,而且我的任何微不足道的尝试都没有更接近匹配由两个不同字符组成的单词。 我也试过用户定义的函数来计算字符串中的字符,但是它们很慢而且不像使用 REGEX 那样优雅。
假设您正在使用支持反向引用和占有匹配的正则表达式引擎,您可以使用:
^(\d)*+(\d)(?:|)*+(\d)(?:||)*+\d+$
同样可以使用原子组来完成:
^(\d)(?>*)(\d)(?>(?:|)*)(\d)(?>(?:||)*)\d+$