- ベストアンサー
正規表現で特定文字列を含む場合エラーにしたい
メールアドレスのチェックの正規表現 ^[0-9A-Za-z~!#$%^&`*+;:"'?/|{}.=_-]+@(?=[0-9A-Za-z~!#$%^&`*+;:"'?/|{}.=_-]+$)(?!.*aaa.bbb.ccc.jp)(?!.*ddd.eee.fff.jp).*$ があるのですが、これに「00000@000000を含む場合エラーを返す」という設定を追加したいです。 色々試したのですが、上手くいかず、もしお分かりになる方いらっしゃいましたらご教授下さい。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
noname#194317
回答No.2
そういう場合分けを正規表現だけでやるのは無理です。それをやらせるには、正規表現が扱える言語(ruby/perl/awkなど)が必要です。正規表現だけでは、マッチする・しない条件は書けますが、マッチした時はこの処理・しない時はこちらの処理・・・みたいなことはできないので。すでに指摘されているとおり、なんでもかんでも正規表現でこなそうとするよりは、この手の言語を使った方が何かと楽なことも多いです。 これは余談ですけど、その正規表現はRFCでメールアドレスに使用することを許している文字ではあるものの、実際にそこまで使わせてくれるプロバイダはほぼ存在しない気がしますね。
その他の回答 (1)
- kmee
- ベストアンサー率55% (1857/3366)
回答No.1
なんでも正規表現で一度にやろうとしないで、別に判定したらどうです? if ( 調べる文字列 が 0000@000000 を含む) then エラーでリターン end if if その正規表現 then ~ のような感じで。 ※ 言語等が不明なので、疑似コードで書きました
質問者
お礼
回答ありがとうございます。 入力チェックに正規表現しか書けないアプリだったのですが、難しいようなので、別の手を考えようと思います。
お礼
回答ありがとうございます。 入力チェックに正規表現しか書けないアプリなのですが、難しいのですね。 了解しました。