php5.2.2の正規表現に関する質問です。

文字コードはutf-8で、pearのaddRuleを使用しています。
$patternの部分の質問です。

$pattern = '/^(\xe3(\x82[\xa1-\xbf]|\x83[\x80-\xb6]|\x83\xbc)| | )+$/';
$form->addRule('item_name', '文字が正しくありません', 'regex', $pattern, 'client');

全角カタカナ, 半角スペース, 全角スペースチェックは上記のように書くことまでは解ったのですが、以下すべてをチェックするにはどのように変えればいいですか?
『全角カタカナ, 半角スペース, 全角スペース, 半角英数字, 全角英数字, 半角シングルクオーテーション, 全角シングルクオーテーション』
いろいろ試しますがなかなかできません。
よろしくお願いします。

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2012/03/14 16:51:58
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答1件)

id:oil999 No.1

回答回数1728ベストアンサー獲得回数320

ポイント100pt

$patternを次のようにしてみてください。

$pattern = '/^(\xe3(\x82[\xa1-\xbf]|\x83[\x80-\xb6]|\x83\xbc)|(\xef(\bc[\x90-\x99]|[\a1-\ba])|(\xbd[\x81-\x9a]))| | |\'’|[a-zA-Z0-9])+)$/';
id:seadwell

ご回答ありがとうございます。
|(\xef(\bc[\x90-\x99]|[\a1-\ba])|(\xbd[\x81-\x9a]))
この部分があると、pearでワーニングが出るんですよね。

Warning: preg_match() [function.preg-match]: Compilation failed: range out of order in character class at offset 76 in /home/***/***/script/PEAR/HTML/QuickForm/Rule/Regex.php on line 73

で、
'/^(\xe3(\x82[\xa1-\xbf]|\x83[\x80-\xb6]|\x83\xbc)|[a-zA-Z0-9\']|[a-zA-Z0-9’]| | )+$/'
のようにしたらとりあえず今のところ正常に動いています。
参考になりました。ありがとうございます。

2012/03/14 16:51:21

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません