-1

次の条件で正規表現が必要です。

  1. 文字列には少なくとも 1 つの文字または数字が含まれている必要があります。
  2. 組み合わせには、!@#$%&* などの特殊文字を含めることができます。
  3. 文字列の長さは 7 以上である必要があります。

例えば。

  1. test1234
  2. test@1234
  3. 1234テスト

前もって感謝します。ここに私のコード

NSPredicate *regex = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", @"^(?[0-9])(?[a-zA-Z]){7,}$"];

BOOL isvalid = [regex evaluateWithObject:string];

申し訳ありませんが、以前使用していた正規表現が見つかりませんでした。

4

2 に答える 2

8

コメントの2番目の例にある先読みに近いです。あなたが持っているものは digit を探していますが[0-9]、その数字で始まる必要があると言っています(文字もチェックしていません)。

これを試して: ^(?=.*[a-zA-Z\d].*)[a-zA-Z\d!@#$%&*]{7,}$

リストされた例を使用して、いくつかのテストを行いました。正規表現は、あなたが見つけた2つの組み合わせです。

  1. 先読みして、少なくとも 1 つの文字または数字があるかどうかを確認します (?=.*[a-zA-Z\d].*)。を.*使用することで、文字列の先頭だけでなく、任意のポイントでチェックを渡すことができます。次に、続行する前に正規表現がチェックを満たす必要があると言っています。文字列の任意の位置に文字または数字が含まれている場合は、if 句と考えてください。

  2. 文字または数字 (文字列全体に少なくとも 1 つ) があることを確認したら、文字、数字、および一連の特殊文字を照合します。少なくとも 7. [a-zA-Z\d\!@#\$%&\*]{7,}. この部分は簡単な部分です。ルールを設定して、少なくとも 7 つくださいと言うだけです。

于 2013-09-19T15:52:28.897 に答える
3

少なくとも 1 つのことについては、先読みを使用できます。残りの部分 (文字クラス、繰り返し、アンカー) は既に把握しているようです。

/^(?=.*[a-z0-9])[a-z0-9!@#$%&*.]{7,}$/i
于 2013-09-19T15:45:16.640 に答える