-1

文字列で許可されている句読点のリストでユーザー入力を取得し、それらの句読点の出現について文字列を照合する必要があります。

例: ユーザーは「@#$%^&」と入力します。検証する必要があります:

  1. ユーザーは、「許可された句読点」ボックスで句読点を繰り返すことはできません。例: 「%%$#@」は使用できません。
  2. ユーザーが入力したパスワードにこれらの句読点のみが含まれ、他の句読点が含まれていない場合。

また、これは多言語対応である必要があります。

ありがとう、正規表現の初心者

追加した:

私が使用している言語は c# です。これを MVC モデル プロパティのデータ注釈に入れる必要があります。

"^(?![0-9])(?![a-zA-Z])\p{P}+$" を使用して、句読点のみを許可するように正規表現をフィルタリングする機能を取得しました。

ただし、正規表現で句読点の重複を見つけることができませんでした。

4

2 に答える 2

0

あなたが言語を指定しなかった限り、私はPHPで例を実装しました:

$s = 'hello %wo$rl@@d';
$r = '~([@#\$%\^&]).*?(?=\1)~';

if (preg_match_all($r, $s, $m)) {
  // password is invalid
}

許可された句読点文字の 1 つが入力 $s の残りの部分で繰り返されている場合、if 条件が満たされます。

于 2012-06-13T13:32:09.430 に答える
0

私があなたの問題をよく理解していれば。正規表現を使用し[.,:;']ます。一致させる句読点が他にある場合は、それらを角括弧内にリストします。

于 2012-06-13T13:21:55.443 に答える