QA@IT
この質問・回答は、@ITの旧掲示板からインポートされたものです。

全角文字を表す正規表現文字列

全角文字列のみ入力OKなテキストボックスがあって、
そのチェックを正規表現バリデータで行おうと思っています。
が、全角ひらがなや全角カタカナを示す正規表現文字列は分か
ったのですが、全角文字を表す正規表現文字列が分かりません。

ここのコラムの「スマートな文字列処理のための正規表現入門」を
一通り読んでみましたが、分からなく・・・・

お分かりになる方、教えてもらえますか?

質問者:ハヤ

回答

こんにちは
Ngaと申します。このスレッドは本当に参考になりました。
「^[  ][^ -~。-゜][  ]$」 をStrutsアプリケーションのvalidation.xmlファイルに記載しました。半角文字は抜けれるようになったんですが、全角スペースのみを入れてもそのまま、通してしまいました。「^[  ][^ -~。-゜]+[  ]*$」にしたりして工夫してみたんですがやはりだめでした。
全角文字だけ(全角スペースを含めた全角記号も除きたい)の表したいのですが、どうすればよいでしょうか。
お分かりの方がおられましたら、教えていただけませんか。

投稿者:Nga

編集 履歴 (0)

すいませんたびたびで、どうもvalidation.xmlファイルに全角空白、「。」と「゜」を書いても後で「?」になってしまうのが今気づきました。これで、うまく動くはずがないですね。。。

投稿者:Nga

編集 履歴 (0)

私も正規表現は多少勉強しているのですが、
正直、難しいと思ってしまっています。

精進せねば・・・
_________________元 dbMagic使い
石油系会社で101NEO(Java簡易言語)
鉄道系システムではテスト仕様書作成でかんづめ
某大手ソフトウェア会社でシステム障害対応
今はTVCMで結構有名な会社で、
なぜか派遣なのにシステム管理者とネットワーク管理者を兼任
(別名

投稿者:かあどきゃぷたー

編集 履歴 (0)

なるほど。つまり、文字列に半角文字が入っていないかを判別するのですね。
やってみます!どうもでした!

投稿者:ハヤ

編集 履歴 (0)

「文字列に半角文字が入っていないかを判別する」事は、正規表現バリデータのみ
では無理そうです。
正規表現バリデータでは、正規表現にたいして、文字列があっていない時のみエラーが
発動するからです。

正規表現クラスを使いかつサーバ内での処理であれば可能ですが、
今回は、正規表現バリデータで処理を行うことを目指しておりましたので、
この方法はあきらめる事にします。→素直にJavascriptの関数を作ってカスタムバリデータから
呼び出します。残念。

投稿者:ハヤ

編集 履歴 (0)

[^ -~。-゜]* はどうでしょう(つまり,半角文字以外のみから成る文字列であれば有効)。

投稿者:Izumi, Y.

編集 履歴 (0)

すみません、すっかり諦めていてJavascriptでやろうとしていて、
チェックを怠っていました。

確かにこれで正規表現バリデータでいけますね。
文字列前後の半角・全角スペースを外してチェックを掛けたいのですが
どうやったらよいのでしょう?

投稿者:ハヤ

編集 履歴 (0)

[  ][^ -~。-゜][  ](スペース+全角文字列+スペース)
[  ] の部分は "["+半角スペース+全角スペース+"]" です。
validator 自体は利用したことがないのでよくわからないのですが、ひょっとしたら ^[  ]
[^ -~。-゜][  ]$ のほうがいいかもしれません。

投稿者:Izumi, Y.

編集 履歴 (0)

「^[  ][^ -~。-゜][  ]*$」でばっちりできました!
本当にありがとうございました!
正規表現て簡単そうで難しくて、途中で挫折しちゃいました。
やっぱりできるんですね、奥が深いです。

投稿者:ハヤ

編集 履歴 (0)
ウォッチ

この質問への回答やコメントをメールでお知らせします。