2

入力パラメーターを検証するためにストアド プロシージャを使用しています。入力パラメーターには、az と AZ および 0-9 が含まれている必要があります。
例:
aS78fhE0-> 正しい
76AfbRZt-> 正しい
76afbrzt-> 正しくない (大文字の AZ を含まない)
asAfbRZt-> 正しくない (数字の 0-9 を含まない)
4QA53RZJ-> 正しくない (小文字の az を含まない)

その正規表現上記の例のように入力パラメータを検証できますか?

どうもありがとう、
Praditha

UPDATE
英数字以外のその他の文字
は使用できません MySQL バージョン 5 を使用しています

4

6 に答える 6

5

ジョンズポストとその後のコメントからさらに:

必要なMySqlは

SELECT * FROM mytable WHERE mycolumn REGEXP BINARY '[a-z]'
                        AND mycolumn REGEXP BINARY '[A-Z]'
                        AND mycolumn REGEXP BINARY '[0-9]'

追加する

AND mycolum REGEXP BINARY '^[a-zA-Z0-9]+$'

文字列に英数字のみが必要な場合

于 2012-08-08T11:00:48.907 に答える
4

先読みアサーションを使用すると、次のようにすることができます。

/^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9]).*$/

update : mysql はルックアラウンド アサーションをサポートしていないようです。

于 2012-08-08T10:07:30.907 に答える
2

ケースごとにテストするために、3 つの個別の正規表現に分割できます。

[a-z][A-Z]、および[0-9]

そしてそれらの一致の結果を一緒にすると、探している結果を得ることができます。

編集:

英数字のみを一致させたい場合は^[a-zA-Z0-9]+$、コメントで Ed Head が提案したようにする必要があります

于 2012-08-08T10:00:50.057 に答える
1

私の解決策は、見つかった大文字、小文字、および必要な数字を文字列に配置できる6つの可能性すべてを順列するため、長い式につながります。

^(.*[a-z].*[A-Z].*[0-9].*|
  .*[a-z].*[0-9].*[A-Z].*|
  .*[A-Z].*[a-z].*[0-9].*|
  .*[A-Z].*[0-9].*[a-z].*|
  .*[0-9].*[a-z].*[A-Z].*|
  .*[0-9].*[A-Z].*[a-z].*)$

.*編集:最後と最初のを忘れました。

于 2012-08-08T10:02:06.877 に答える
1

残念ながら、MySQL はルックアラウンド アサーションをサポートしていないため、正規表現エンジン用にスペルアウトする必要があります (これらの文字のみが有効であると仮定します)。

^(
[A-Za-z0-9]*[a-z][A-Za-z0-9]*[A-Z][A-Za-z0-9]*[0-9][A-Za-z0-9]*|
[A-Za-z0-9]*[a-z][A-Za-z0-9]*[0-9][A-Za-z0-9]*[A-Z][A-Za-z0-9]*|
[A-Za-z0-9]*[A-Z][A-Za-z0-9]*[a-z][A-Za-z0-9]*[0-9][A-Za-z0-9]*|
[A-Za-z0-9]*[A-Z][A-Za-z0-9]*[0-9][A-Za-z0-9]*[a-z][A-Za-z0-9]*|
[A-Za-z0-9]*[0-9][A-Za-z0-9]*[a-z][A-Za-z0-9]*[A-Z][A-Za-z0-9]*|
[A-Za-z0-9]*[0-9][A-Za-z0-9]*[A-Z][A-Za-z0-9]*[a-z][A-Za-z0-9]*
)$

または、MySQL では:

SELECT * FROM mytable WHERE mycolumn REGEXP BINARY "^([A-Za-z0-9]*[a-z][A-Za-z0-9]*[A-Z][A-Za-z0-9]*[0-9][A-Za-z0-9]*|[A-Za-z0-9]*[a-z][A-Za-z0-9]*[0-9][A-Za-z0-9]*[A-Z][A-Za-z0-9]*|[A-Za-z0-9]*[A-Z][A-Za-z0-9]*[a-z][A-Za-z0-9]*[0-9][A-Za-z0-9]*|[A-Za-z0-9]*[A-Z][A-Za-z0-9]*[0-9][A-Za-z0-9]*[a-z][A-Za-z0-9]*|[A-Za-z0-9]*[0-9][A-Za-z0-9]*[a-z][A-Za-z0-9]*[A-Z][A-Za-z0-9]*|[A-Za-z0-9]*[0-9][A-Za-z0-9]*[A-Z][A-Za-z0-9]*[a-z][A-Za-z0-9]*)$";
于 2012-08-08T10:14:44.533 に答える
-1

[a-zA-Z0-9] * [az] + [a-zA-Z0-9] * [AZ] + [a-zA-Z0-9] * [0-9] + [a-zA-Z0 -9] * | [a-zA-Z0-9] * [az] + [a-zA-Z0-9] * [0-9] + [a-zA-Z0-9] * [AZ] + [ a-zA-Z0-9] * | [a-zA-Z0-9] * [AZ] + [a-zA-Z0-9] * [az] + [a-zA-Z0-9] * [0 -9] + [a-zA-Z0-9] * | [a-zA-Z0-9] * [AZ] + [a-zA-Z0-9] * [0-9] + [a-zA- Z0-9] * [az] + [a-zA-Z0-9] * | [a-zA-Z0-9] * [0-9] + [a-zA-Z0-9] * [AZ] + [a-zA-Z0-9] * [az] + [a-zA-Z0-9] * | [a-zA-Z0-9] * [0-9] + [a-zA-Z0-9] * [az] + [a-zA-Z0-9] * [AZ] + [a-zA-Z0-9] *

于 2012-08-08T11:22:56.807 に答える