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