Ответ 1
Положительный взгляд - это то, что вы ищете. Регулярное выражение выглядит следующим образом:
(?=.*[A-Za-z])(?=.*[0-9])[A-Za-z0-9]+
Здесь (?=.*[A-Za-z])
- это положительный взгляд, который утверждает, что ваша строка как хотя бы один символ и (?=.*[0-9])
утверждает, что она имеет хотя бы одну цифру. Важно отметить, что положительный lookahead не возвращает совпадение, а скорее утверждает, существует ли совпадение или нет. Итак, вы должны прочитать предыдущее регулярное выражение как "утверждать, что он имеет хотя бы один символ, утверждают, что он имеет хотя бы одну цифру, теперь, когда мы знаем, что утверждения прошли, просто проверьте буквенно-цифровые символы".
Это очень интересно, потому что это позволяет вам легко комбинировать требования к валидации вашего приложения, не делая ваше регулярное выражение очень сложным. Например, если теперь требуется, чтобы строка имела ровно 20 символов, вам просто нужно добавить новое положительное утверждение, например:
(?=[A-Za-z0-9]{20})(?=.*[A-Za-z])(?=.*[0-9])[A-Za-z0-9]+
Надеюсь, что это поможет!