- ベストアンサー
正規表現について
正規表現について質問をさせていただきます。 VB6.0にて正規表現を使用し、入力された文字のチェックを行っていますが どうしてもうまくいきません。 チェックしたい文字は A(半角アルファベット大文字1文字)または AAA(半角アルファベット大文字3文字)または (AAA)(半角カッコつき半角アルファベット大文字3文字)で 上記3パターン以外はエラーとしたいと思っています。 パターンは下記のように作成したのですが "(^[\(][A-Z]{3}[\)])|(^[A-Z]{1,3})" A、AAA、(AAA)以外でもA(AA)やAAAA等も正常ケースとして通過してしまいます。 パターンをどのように作成すればよいか教えて下さい。 よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
先頭だけ強制して終端を強制しないからです。 AAAAは先頭が英字1文字なのでTrueです。 それに{1,3}は1~3ということで2も入ります。 正しいパターンは以下の通りです。 ^(\([A-Z]{3}\)|[A-Z]|[A-Z]{3})$ 初めに先頭から最後までが()内のいずれかで あることを宣言します。^(●|▲|■)$ ()の●は左カッコ、英字3文字、右カッコ ▲は英字1文字、■は英字3文字です。
その他の回答 (1)
- notnot
- ベストアンサー率47% (4900/10358)
>A(半角アルファベット大文字1文字)または >AAA(半角アルファベット大文字3文字)または >(AAA)(半角カッコつき半角アルファベット大文字3文字) をそのまま素直に書くと、 "^([A-Z]|[A-Z]{3}|\([A-Z]{3}\))$"
お礼
教えていただいたパターンにて無事チェックを行うことができるようになりました。 ありがとうございます。 正規表現を使い始めたばかりで、まだまだ勉強yが足りませんでした。 大変勉強になります。 本当にありがとうございました。
お礼
教えていただいたパターンで無事チェックを行うことができました。 先に回答をしていただいた方には申し訳ないのですが、 より詳しく説明を記入してくださったnda23様の回答を ベストアンサーに選ばせていただききました。 正規表現を使い始めたばかりで、大変勉強になります。 本当に助かりました。 ありがとうございます。