0

特殊文字と一緒に数値と英数字の両方の値を含む必要があるパターンを見つけることができる正規表現を構築しようとしています。このタイプの正規表現を扱いますが、特殊文字を使用しない答えを見つけました。

^$=()_"'[\@などの特殊文字を正規表現に含めるにはどうすればよいですか?

^([0-9]+[a-zA-Z]+|[a-zA-Z]+[0-9]+)[0-9a-zA-Z]*$

少し説明してもらえますか?

正規表現テスター: http://regexlib.com/RETester.aspx

ありがとうございました。

解決策として、次の正規表現を見つけました。^(?=.*\d)(?=.*[a-zA-Z]).{4,8}$

多分それはあなたを助けることができます。

4

2 に答える 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;
}

タイピングは少し増えるが、脳へのダメージは少ない

于 2013-10-29T14:09:07.177 に答える
1

正規表現は 2 つの部分で構成されています。どちらも行頭 ( ^) と行末( ) の間にあるため、完全な行をキャプチャする必要があります$

  1. ([0-9]+[a-zA-Z]+|[a-zA-Z]+[0-9]+) これは、2 つの正規表現または ( |) を組み合わせたものです。最初の正規表現は、1 つ以上の数字 ( [0-9]+) の後に 1 つ以上の文字 ( ) が続き[a-zA-Z]+ます。この正規表現は、逆のケースの正規表現 (1 つ以上の文字の後に 1 つ以上の数字が続く) との論理和です。
  2. 2 番目のグループは、上記の後に正規表現の 0 個以上の文字または数字が続くことを示しています ( [0-9a-zA-Z]*)
于 2013-10-29T13:59:08.053 に答える