Вы может сделать это (и я предполагаю, что буквы/цифры вы имеете в виду ASCII буква/цифру), но ваши последние два требования не будут простыми:
if (preg_match(
'/^ # Start of string
(?=.*[a-z]) # Assert at least one letter
(?=.*[0-9]) # and one digit
(?=.*[^a-z0-9]) # and one "other" character
(?!.*(.)\1{2}) # and no three identical characters in a row
(?!.*(?:abc|bcd|cde|def|efg|fgh|ghi|
hij|ijk|jkl|klm|lmn|mno|nop|
opq|pqr|qrs|rst|stu|tuv|uvw|
vwx|wxy|xyz)) # and no three-letter sequence
(?!.*(?:123|234|345|456|567|678|789|890)) # and no three-digit sequence
.{8,} # Match at least 8 characters
$ # End of string/ix',
$subject)) {
# Successful match
} else {
# Match attempt failed
}
Если вы также хотите исключить буквы/цифры в порядке убывания (или таких, как zab
или 901
), вам нужно добавить их к чередованиям.
Вы можете привести пример? – Amitesh
Нет более близкого варианта голосования для * «недостаточно усилий или попыток решения» *? Что делать с такими вопросами? Ответьте или попросите больше OP или за что-нибудь проголосовать? (Я думаю, это принадлежит мета.) – Qtax
Вы что-то пробовали? Если да, включите его в свой вопрос. – emh