質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

正規表現

正規表現とは特定の文字列によるパターンマッチングを行う際に用いられる宣言型プログラミングです。

Q&A

解決済

2回答

8173閲覧

正規表現について 半角英数とアンダーバー

pac894398

総合スコア429

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

正規表現

正規表現とは特定の文字列によるパターンマッチングを行う際に用いられる宣言型プログラミングです。

0グッド

0クリップ

投稿2014/12/28 15:34

PHP 正規表現についてで質問させていただいたものです。

全てが 半角英数 アンダーバー であることを確認したいです。

以下のような正規表現であっておりますでしょうか?

lang

1function is_valid_id($str) { 2 return (bool)preg_match('/\A[a-z0-9_]++\z/ui', $str); 3}

一応 回答者様のコードを参考に編集し、動作したのですが正規表現 初心者で不安のため確認をお願いします。

ご回答よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答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

katoy

総合スコア22324

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

pac894398

2014/12/29 02:35

入力されたものがTwitterIDであるかどうかを判別したいと思っています。 その場合 __ なども、許可されているので これで大丈夫とうことで宜しいでしょうか?
katoy

2014/12/29 05:01

- [https://support.twitter.com/articles/243961-](https://support.twitter.com/articles/243961-) > .. > TwitterやAdminといった語が含まれるユーザー名は使用できません。公式Twitterアカウントを除き、TwitterやAdminという文字を含むアカウント名は使用できません。 > ユーザー名は15文字までです。本名は20文字までですが、ユーザー名は使いやすいように短くなっています。 > ユーザー名には英数字 (文字のA~Z、数字の0~9) しか含めることはできません。 > ただし、上記のとおりアンダーラインは例外です。希望するユーザー名に、記号やダッシュ、スペースが含まれていないことを確認してください。 > ... Twitter, Admin の除外は置いとくとして、長さ 15 までの制限は 正規表現でもチェックできますね。 '/\A[a-z0-9_]{1,15}\z/ui' とすると、16 文字以上の長さのものを はじくことができます。
guest

0

サイト等で「正規表現チェッカー」みたいな物を利用してチェックするのが早いですよ。
いろいろ入力してみて、戻り値を試してみると良いかと思います。

投稿2014/12/28 18:32

landy77

総合スコア1614

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

gouf

2014/12/28 19:14

そのほかの検索キーワードとして、"regex php online" などでも同様のサイトが見つかると思います Online regex tester and debugger: JavaScript, Python, PHP, and PCRE https://www.regex101.com/
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問