teratail header banner
teratail header banner
質問するログイン新規登録
Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

PHP

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

Q&A

解決済

1回答

3504閲覧

正規表現を複数組み合わせる方法

seastar

総合スコア62

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

PHP

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

0グッド

0クリップ

投稿2021/12/12 14:00

編集2021/12/12 23:50

0

0

Laravel5.6 / PHP 7.4.12

正規表現を複数、OR条件で組み合わせたいのですが、
"preg_match(): No ending delimiter '/' found エラーが表示されます。

試したこと

PHP

1class sample_request extends FormRequest { 2 3 public function authorize() 4 { 5 return true; 6 } 7 8 public function rules() 9 { 10 $data = $this->all(); 11 return [ 12 'sample' => 'required|regex:/^[a-zA-Z]+$ | ^(?!.[0-9]).*$/'; 13 ]; 14 } 15~~~ 16 17リクエストクラスの正規表現部抜粋 18'sample' => 'required|regex:/^[a-zA-Z]+$ | ^(?!.[0-9]).*$/'; 19 → preg_match(): No ending delimiter '/' found 20 21単体で確認 22'sample' => 'required|regex:/^[a-zA-Z]+$/'; 23 → 正常に動作 24'sample' => 'required|regex:/^(?!.[0-9]).*$/'; 25 → 正常に動作

regex:のあと全体を()で囲う、など試しましたがpreg_match(): No ending delimiter '/' foundを解消することができずに止まっているところです。

単純な文字だけをはじく'AA|BB|CC'のような複数条件のように書く方法をご教示いただけますと幸いです。

宜しくお願いいたします。

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

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

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

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

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

seastar

2021/12/12 22:45

ご指摘ありがとうございます。 フレームワークはLaravelになります。 バージョンは5.6です。
m.ts10806

2021/12/12 23:15

質問タグに追加し、質問本文も調整してください。 あとPHPのバージョンもあったほうが良いです。
m.ts10806

2021/12/12 23:15

コードもなるべく全体の流れが見えるくらいには欲しい
seastar

2021/12/12 23:50

修正しました。よろしくお願いいたします。
guest

回答1

0

ベストアンサー

ドキュメントに書いてあります:

regex/not_regexパターンを使用するとき、特に正規表現に|文字が含まれている場合は、|区切り文字を使用する代わりに、配列でルールを指定する必要があります。

php

1'sample' => ['required','regex:/^[a-zA-Z]+$ | ^(?!.[0-9]).*$/'];

に変えましょう。

投稿2021/12/13 01:43

skys215

総合スコア910

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

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

seastar

2021/12/13 05:12

ありがとうございます。 ドキュメントをきちんと読めておりませんでした。とても勉強になりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.30%

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

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

質問する

関連した質問