• ベストアンサー

正規表現での空白文字チェックについて。

VB2005環境です。 正規表現を用いて、以下の3パターンのチェックをしたいと 思っています。 A.半角のみカナ許可(半角スペースも許可) B.全角のみカナ許可(全角スペース許可) C.全角&半角カナのみ許可(スペース許可) Cのパターンは^[ァ-ヶ\uFF61-\uFF9F\s]+$のように 記述してみましたが、\sでは全角、半角問わずに スペースであればよしとしてしまうようで、A、Bの パターンが実現できません。 探してみた限り、半角全角スペースを区別する正規表現が 見つからなかったのですが、そのような表現がありましたら ご教授いただけないでしょうか?

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

  • ベストアンサー
  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.2

\s にはスペースだけじゃなくて、タブとか改行も含まれるんですが それはどういう扱いにするのでしょうか? 単に、半角スペースや全角スペースだけを除外したいという話であれば [ァ-ヶ\uFF61-\uFF9F\s-[ ]]←半角スペースを除外 [ァ-ヶ\uFF61-\uFF9F\s-[ ]]←全角スペースを除外。 ではどうでしょうか。 http://msdn.microsoft.com/ja-jp/library/20bw873z(VS.80).aspx 文字クラス減算 文字クラスは、文字のセットを定義します。文字クラス減算によって、ある文字クラスから別の文字クラスの文字を除外した文字セットが生成されます。 文字クラス減算式の形式は次のとおりです。 [ base_group -[ excluded_group ]] 角かっこ ([]) とハイフン (-) は省略できません。base_group は、「文字クラスの構文」の表で説明されている文字グループの肯定または文字グループの否定です。excluded_group は、別の文字グループの肯定または文字グループの否定、あるいは別の文字クラス減算式です (つまり文字クラス減算式は入れ子にできます)。 たとえば、"a" ~ "z" の文字範囲で構成される基本グループがあるとします。"m" を除外した基本グループで構成される文字のセットを定義するには、[a-z-[m]] を使用します。"d"、"j" および "p" の文字を除外した基本グループで構成される文字のセットを定義するには、[a-z-[djp]] を使用します。"m" ~ "p" の文字範囲を除外した基本グループで構成される文字のセットを定義するには、[a-z-[m-p]] を使用します。" >"[^ァ-ヶ|\uFF61-\uFF9F|\S]" 文字クラスの中でストロークはメタ文字じゃありませんし、 ^は全体にかかるので、¥Sじゃ意味が逆です。

その他の回答 (1)

  • nda23
  • ベストアンサー率54% (777/1415)
回答No.1

最初の"^"と最後の"+$"はなんでしょ? それから、許可とあるからには「それ以外」を見つけたらエラーということでは? よって、"[^ァ-ヶ|\uFF61-\uFF9F|\S]"という文字が見つかればエラーということだと思います。 全角、半角のスペースを区別したいなら、コードで表記すればよいでしょう。