Я пытаюсь создать регулярное выражение, которое может найти шаблоны, которые ДОЛЖНЫ содержать как числовые, так и буквенно-цифровые значения вдоль специальных символов. Я нашел ответ, который касается этого типа регулярных выражений, но без специальных символов.
Как включить специальные символы, включая: ^ $ =() _ "'[\ @ в регулярном выражении?
^([0-9]+[a-zA-Z]+|[a-zA-Z]+[0-9]+)[0-9a-zA-Z]*$
вы можете объяснить это немного, пожалуйста?
Регулятор Regex: http://regexlib.com/RETester.aspx
Спасибо.
В качестве решения я нашел это регулярное выражение: ^(?=.*\d)(?=.*[a-zA-Z]).{4,8}$
Может быть, это может вам помочь.
Почему так сложно!?
enum { numeric = 1; alpha = 2, special = 4; }
bool check(const std::string& s) {
for(std::string::size_type i = 0; i < s.size; ++i) {
if(is_numeric(s[i])) result |= numeric;
if(is_alpha(s[i])) result |= alpha;
if(is_special(s[i])) result |= special;
if(result == numeric | alpha | special)
return true;
}
return false;
}
Немного больше набрав, но меньше повреждений мозга
Ваше регулярное выражение состоит из двух частей, оба должны захватить полную строку, поскольку они находятся между началом строки (^
) и окончанием строки ($
):
|
) вместе. Первым регулярным выражением является одно или несколько чисел ([0-9]+
), за которым следует одна или несколько букв ([a-zA-Z]+
). Это регулярное выражение имеет или имеет обратное регулярное выражение: одна или несколько букв, за которыми следует одно или несколько чисел.[0-9a-zA-Z]*
)
special characters
\W
в своем выражении.