• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Perlの正規表現(全角カナの判定について))

Perlの正規表現で全角カナの判定をする方法

このQ&Aのポイント
  • Perlの正規表現を使用して、HTMLのフォームで受け取ったデータが全角カナであるかどうかを判定する方法を教えてください。
  • 上記のコードでは、$FORM{'FURIGANA'}に全角カナが一文字でも含まれていれば真、含まれていなければ偽という判定を行いますが、$FORM{'FURIGANA'}が全て全角カナである場合に真、それ以外の文字が一文字でも含まれている場合に偽という判定をするにはどのような正規表現を使用すれば良いでしょうか。
  • 試したいくつかの正規表現による方法でうまくいかなかったので、どのような表現が正しいのかわかりません。ご教示いただけると幸いです。

質問者が選んだベストアンサー

  • ベストアンサー
  • noranuko
  • ベストアンサー率46% (620/1332)
回答No.1

基本的な考え方として、下記2つの組み合わせになるかと思います。 1.全角カナ文字すべてを示す正規表現を作る 2.文字列の最初から最後まですべてある文字である正規表現を作る まず1については質問者さんの式でも問題ないと思います(が未検証)。 日本語がそのまま使える環境なら"[ア-ンーヽヾ]"とでもなりますか。  ※上記は「ア~ン、ーヽヾ」を示す正規表現になります。   文字列に上記の文字が含まれていればマッチします。 2についてはたとえば、 ^a*$ という表現にすると文字列の最初から最後までa、もしくは空文でないとマッチしません。 ^a+$ にすれば空文にもマッチしなくなります。  ※"^"は文字列の先頭、"$"は文字列の最後を示します。   なので"^a$"だと"a"という文字列にしかマッチしません。 で、この1と2を組み合わせると ^[ア-ンーヽヾ]+$ になるでしょうか。 これは先頭の文字が「ア~ン、ーヽヾ」のいずれかで、「ア~ン、ーヽヾ」が1文字以上連続し、 文字列の最後まで続くという意味になります。 つまり「全て全角カナであれば真、それ以外の文字が一文字でも含まれていれば偽」という条件を満たします。 ただ、「ーヽヾ」の文字は文字列の先頭に来ることはないと思いますので、 ^[ア-ン][ア-ンーヽヾ]+$ のほうがいいでしょうか。

Stiltzkin
質問者

お礼

さっそくご回答いただき、ありがとうございました。 おかげさまで、ご教示いただいた方法で動作しました。本当にありがとうございました。

関連するQ&A