Regex 正则表达式需要4个数字字符

Regex 正则表达式需要4个数字字符,regex,postgresql,Regex,Postgresql,我正在编辑密码规则,前面的要求如下所示: -- Contain characters from the following four (4) categories: -- English uppercase characters (A through Z) -- English lowercase characters (a through z) -- Base 10 digits (0 through 9) -- Non-alphabetic characters (for example:

我正在编辑密码规则,前面的要求如下所示:

-- Contain characters from the following four (4) categories:
-- English uppercase characters (A through Z)
-- English lowercase characters (a through z)
-- Base 10 digits (0 through 9)
-- Non-alphabetic characters (for example: !, $, %)

SELECT uuid_generate_v4(), 1, '((?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[\W_])).*', 'Password Rule 3', true;
SELECT uuid_generate_v4(), 1, '((?=.*\d{4,})(?=.*[\W_])).*', 'Password Rule 3', true;
新规则只是我需要4个数字字符,其余的可以是任何字符。我正在尝试以下方法:

-- Contain characters from the following four (4) categories:
-- English uppercase characters (A through Z)
-- English lowercase characters (a through z)
-- Base 10 digits (0 through 9)
-- Non-alphabetic characters (for example: !, $, %)

SELECT uuid_generate_v4(), 1, '((?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[\W_])).*', 'Password Rule 3', true;
SELECT uuid_generate_v4(), 1, '((?=.*\d{4,})(?=.*[\W_])).*', 'Password Rule 3', true;
但当我将其插入数据库并尝试使用密码规则创建新帐户时,它会生成错误。这是正则表达式的问题吗?如果正则表达式是好的,那么这只是一个单独的数据库问题,我必须解决。

您可以使用

选择uuid_generate_v4(),1',(?:\D*\D){4}',密码规则3',true;
正则表达式将匹配四次出现的任何字符,而不是后跟数字的数字

实际上,此模式要求字符串包含任何四个不一定连续的数字


请参阅。

4个数字字符是什么意思?它们是否应该是连续的?其余的要求呢?它们是否不再有效?密码只需要4个数字字符(0-9)。任何顺序都可以,密码的其余部分可以是字符、数字和符号的任意组合。当使用
'(?:\D*\D){4}'
'(?:\D*\D){4}.*.'
时,其他要求不再有效。感谢您在正则表达式测试仪中工作良好。我用的那个实际上不能正常工作。