PHP 正規表現についてで質問させていただいたものです。
全てが 半角英数 アンダーバー であることを確認したいです。
以下のような正規表現であっておりますでしょうか?
lang
1function is_valid_id($str) { 2 return (bool)preg_match('/\A[a-z0-9_]++\z/ui', $str); 3}
一応 回答者様のコードを参考に編集し、動作したのですが正規表現 初心者で不安のため確認をお願いします。
ご回答よろしくお願いします。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答2件
0
ベストアンサー
テストコードを書いてみました。
この結果は、望む動作でしょうか?
("1" や "_" を valid_id として認識したいかどうかは質問からは断定できない...)
lang
1<?php 2 3 function is_valid_id($str) { 4 return (bool)preg_match('/\A[a-z0-9_]++\z/ui', $str); 5 } 6 7 function test() { 8 9 # 0 文字 10 $id = ""; 11 print $id . " : " . is_valid_id($id) . "\n"; 12 13 # 1文字 14 $id = "a"; 15 print $id . " : " . is_valid_id($id) . "\n"; 16 17 $id = "A"; 18 print $id . " : " . is_valid_id($id) . "\n"; 19 20 $id = "_"; 21 print $id . " : " . is_valid_id($id) . "\n"; 22 23 $id = "1"; 24 print $id . " : " . is_valid_id($id) . "\n"; 25 26 $id = " "; 27 print $id . " : " . is_valid_id($id) . "\n"; 28 29 $id = "あ"; 30 print $id . " : " . is_valid_id($id) . "\n"; 31 32 # 2文字 33 $id = "Aa"; 34 print $id . " : " . is_valid_id($id) . "\n"; 35 36 $id = "12"; 37 print $id . " : " . is_valid_id($id) . "\n"; 38 39 $id = "a_"; 40 print $id . " : " . is_valid_id($id) . "\n"; 41 42 $id = "_a"; 43 print $id . " : " . is_valid_id($id) . "\n"; 44 45 $id = "1a"; 46 print $id . " : " . is_valid_id($id) . "\n"; 47 48 $id = "a1"; 49 print $id . " : " . is_valid_id($id) . "\n"; 50 51 $id = " a"; 52 print $id . " : " . is_valid_id($id) . "\n"; 53 54 $id = "a"; 55 print $id . " : " . is_valid_id($id) . "\n"; 56 57} 58 59 test(); 60?>
実行結果は次のようになります。
: a : 1 A : 1 _ : 1 1 : 1 : あ : Aa : 1 12 : 1 a_ : 1 _a : 1 1a : 1 a1 : 1 a : a : 1
本格的にテストをかくなら phpunit などをつかうことを検討してください。
一般的に id は 一文字目は 英字, 2文字目以降は 英字または数字または_ というようにするとおもうので
/\A[a-z]+[a-z0-9_]*\z/ui
のほうが適しているかもしれません。
この場合のテスト結果は次のようになります。
: a : 1 A : 1 _ : 1 : : あ : Aa : 1 12 : a_ : 1 _a : 1a : a1 : 1 a : a : 1
このケースであ "_a" を id としては認識しません。
"a" を id として認識させる、 "" は認識させない とするなら、別の正規表現にする必要があります。
投稿2014/12/28 21:27
総合スコア22324
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2014/12/29 02:35
2014/12/29 05:01