重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

正規表現について質問をさせていただきます。
VB6.0にて正規表現を使用し、入力された文字のチェックを行っていますが
どうしてもうまくいきません。

チェックしたい文字は
A(半角アルファベット大文字1文字)または
AAA(半角アルファベット大文字3文字)または
(AAA)(半角カッコつき半角アルファベット大文字3文字)で
上記3パターン以外はエラーとしたいと思っています。

パターンは下記のように作成したのですが
"(^[\(][A-Z]{3}[\)])|(^[A-Z]{1,3})"

A、AAA、(AAA)以外でもA(AA)やAAAA等も正常ケースとして通過してしまいます。
パターンをどのように作成すればよいか教えて下さい。

よろしくお願いします。

A 回答 (2件)

先頭だけ強制して終端を強制しないからです。


AAAAは先頭が英字1文字なのでTrueです。
それに{1,3}は1~3ということで2も入ります。
正しいパターンは以下の通りです。
^(\([A-Z]{3}\)|[A-Z]|[A-Z]{3})$
初めに先頭から最後までが()内のいずれかで
あることを宣言します。^(●|▲|■)$
()の●は左カッコ、英字3文字、右カッコ
▲は英字1文字、■は英字3文字です。
    • good
    • 0
この回答へのお礼

教えていただいたパターンで無事チェックを行うことができました。
先に回答をしていただいた方には申し訳ないのですが、
より詳しく説明を記入してくださったnda23様の回答を
ベストアンサーに選ばせていただききました。
正規表現を使い始めたばかりで、大変勉強になります。
本当に助かりました。
ありがとうございます。

お礼日時:2012/02/18 11:22

>A(半角アルファベット大文字1文字)または


>AAA(半角アルファベット大文字3文字)または
>(AAA)(半角カッコつき半角アルファベット大文字3文字)

をそのまま素直に書くと、

"^([A-Z]|[A-Z]{3}|\([A-Z]{3}\))$"
    • good
    • 0
この回答へのお礼

教えていただいたパターンにて無事チェックを行うことができるようになりました。
ありがとうございます。
正規表現を使い始めたばかりで、まだまだ勉強yが足りませんでした。
大変勉強になります。
本当にありがとうございました。

お礼日時:2012/02/18 11:15

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!