MySQL nie obsługuje obejść ani nie obsługuje \d
lub \w
zajęcia. Możesz podzielić wyrażenie regularne w ten sposób:
SELECT * FROM table WHERE col REGEXP '^.{3,}$' AND col NOT REGEXP '^[0-9]+$' AND col NOT REGEXP '([^$&%@]*[$&%@]){4}' AND col NOT REGEXP '[[:<:]][[:alnum:]_]{11}'
Gdzie:
REGEXP '^.{3,}$'
- całkowita długość powinna wynosić 3 lub więcej znakówAND col NOT REGEXP '^[0-9]+$'
- ciąg nie może składać się tylko z cyfrAND col NOT REGEXP '([^$&%@]*[$&%@]){4}'
- ciąg nie może mieć 4 znaków specjalnychAND col NOT REGEXP '[[:alnum:]_]{11}'
- ciąg nie może zawierać słowa z 11 znakami