Регулярное выражение: только числовые + буквенные + специальные символы

0

Я пытаюсь создать регулярное выражение, которое может найти шаблоны, которые ДОЛЖНЫ содержать как числовые, так и буквенно-цифровые значения вдоль специальных символов. Я нашел ответ, который касается этого типа регулярных выражений, но без специальных символов.

Как включить специальные символы, включая: ^ $ =() _ "'[\ @ в регулярном выражении?

^([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}$

Может быть, это может вам помочь.

  • 0
    определить special characters
  • 1
    Если под специальными символами вы подразумеваете несловарные символы (буквенные символы состоят из букв, цифр и подчеркиваний), вы можете использовать флаг \W в своем выражении.
Показать ещё 1 комментарий
Теги:

2 ответа

2
Лучший ответ

Почему так сложно!?

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
    Да, на самом деле это повреждение мозга. Я буду делать это жестким путем в следующий раз. Спасибо @Dieter, я буду использовать этот код, это намного проще
  • 0
    Это очень читабельно, но, к сожалению, очень медленно по сравнению с решением регулярных выражений (конечно, с надлежащим механизмом регулярных выражений).
Показать ещё 1 комментарий
1

Ваше регулярное выражение состоит из двух частей, оба должны захватить полную строку, поскольку они находятся между началом строки (^) и окончанием строки ($):

  1. ([0-9] + [a-zA-Z] + | [a-zA-Z] + [0-9] +) Это состоит из двух регулярных выражений or'd (|) вместе. Первым регулярным выражением является одно или несколько чисел ([0-9]+), за которым следует одна или несколько букв ([a-zA-Z]+). Это регулярное выражение имеет или имеет обратное регулярное выражение: одна или несколько букв, за которыми следует одно или несколько чисел.
  2. Вторая группа говорит, что за этим следует регулярное выражение, ноль или более букв или цифр ([0-9a-zA-Z]*)
  • 0
    О, хорошо, теперь это намного лучше, так что, если я должен включить специальные символы, он должен быть в 1. Начало 2. Между 2 группами 3. Конец

Ещё вопросы

Сообщество Overcoder
Наверх
Меню