我需要帮助你写这个表达式定期到Postgresql。
这在C#中工作得很好,但我需要在Postgresql中使用它:
^[\S]*(?=.*[a-z])(?=.*[A-Z])(?=.*[\d])(?=.*[\W_])[\S]{8,15}$我需要验证一个词,有一个或多个数字,一个或多个字母和一个或多个特殊字符。8到15之间的大小
发布于 2020-05-15 12:58:36
有相当多的方法可以使用regex进行匹配。您可以找到Postgres文档here。在我看来,您可以使用POSIX正则表达式操作符~。
还有其他变体,如~*,它不区分大小写,前面有两个相同的not操作符,!~和!~*。
例如:
SELECT *
FROM strings s
WHERE s.string ~ '^[\S]*(?=.*[a-z])(?=.*[A-Z])(?=.*[\d])(?=.*[\W_])[\S]{8,15}$'
;在相同的文档中还可以找到模式匹配字符串函数,例如,REGEXP_MATCHES和REGEXP_REPLACE。
Ex_2:
SELECT REGEXP_MATCHES(s.string, '^[\S]*(?=.*[a-z])(?=.*[A-Z])(?=.*[\d])(?=.*[\W_])[\S]{8,15}$')[0] -- note the index
FROM strings s
;发布于 2020-05-19 03:52:56
非常感谢,但我不能在你的帮助下工作,在这种情况下使用'D@niel123+)时我得不到正确的答案:
1) SELECT REGEXP_MATCHES('D@niel123+','^\S(?=.A-Z)(?=.\d)(?=.*\W_)\S{8,15}$')
2)选择'D@niel123+‘~ E'^(?=[^:lower:][:lower:])(?=[^:upper:][:upper:])(?=\D*\d)(?=[:alnum:]*[^:alnum:])\S{8,15}$';
3)选择'D@niel123+‘~ E'^\S(.A-Z)(.\d)(.*\W_)\S{2,15}$';
https://stackoverflow.com/questions/61805142
复制相似问题