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

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

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

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

正規表現

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

文字コード

文字コードとは、文字や記号をコンピュータ上で使用するために用いられるバイト表現を指します。

Q&A

解決済

3回答

1666閲覧

php正規化表現を使ってエスケープシーケンス、特殊文字、ひらがな、カタカナ漢字、全角を無効化する方法パスワード入力画面を作りたい。

退会済みユーザー

退会済みユーザー

総合スコア0

PHP

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

正規表現

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

文字コード

文字コードとは、文字や記号をコンピュータ上で使用するために用いられるバイト表現を指します。

0グッド

0クリップ

投稿2021/10/01 03:38

提示コードですが参考サイトを参考にして0~9 A~Z a~z必ず数字かアルファベットが一文字以上あり6字以上14字以下という制限を作ることができたのですが以下の制限を含む場合の正規化表現はどうやって作るのでしょうか?エスケープシーケンスを[^!"#$%&'()*+\-.,/:;<=>?@[\]^_{|}~]+`のように設定しましたがエラーになります。

「カタカナ、漢字、記号、ひらがな、エスケープシーケンス、その他の特殊文字@等は使えず」 パスワード入力: 数字、アルファベット大文字、小文字、のみで8字以上12文字以下 ID入力: 数字、アルファベット大文字、小文字、4字以上 15字以下

参考サイト: https://wepicks.net/phpref-regular_expression/#10-3
参考サイト: https://www-creators.com/archives/1827

if(preg_match('/(?=.*[0-9])(?=.*[A-Z])(?=.*[a-z])[a-zA-Z0-9][^!"#$%&'()*+\-.,/:;<=>?@[\]^_`{|}~]+{6,14}/',$_REQUEST('id')) == false)

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

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

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

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

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

m.ts10806

2021/10/01 04:08

なんのエラーか知らないですが、やりやすいやり方を考えるって頭はないですか?
Zuishin

2021/10/01 10:39

この質問者はどうでもいいけど、これを見た人が「エスケープシーケンス」という言葉を間違って覚えてはいけないので、これが間違って使われているということだけ書いておきます。
guest

回答3

0

ベストアンサー

「数字、アルファベット大文字、小文字、のみ」という条件がはっきりしているのでしたら、「それ以外の文字を弾く」という方針ではなく、「この文字だけを通す」ホワイトリストの考えで進めたほうが、綺麗にできるかと思います。

投稿2021/10/01 03:42

maisumakun

総合スコア145208

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

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

0

パスワード入力: 数字、アルファベット大文字、小文字、のみで8字以上12文字以下

"/\A[A-Za-z0-9]{8,12}\z/"

ID入力: 数字、アルファベット大文字、小文字、4字以上 15字以下

"/\A[A-Za-z0-9]{4,15}\z/"

でしょうか。ただし、パスワードに12文字などという短い上限を付けるのは絶対に駄目です。せめて数百レベルで。記号を許さないのもやめた方が良いでしょうね。

投稿2021/10/01 04:12

編集2021/10/01 10:16
otn

総合スコア84804

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

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

退会済みユーザー

退会済みユーザー

2021/10/01 08:41

なるほど質問ですが半角全角のスペースはだめという正規化表現はどう書くのでしょうか? preg_match('/(?=.*[0-9])(?=.*[A-Z])(?=.*[a-z])[^  ]{5,25}/',$_REQUEST['password'])
otn

2021/10/01 10:19

> 数字、アルファベット大文字、小文字 なら最初からスペースはだめですが、これと別の話で、単独の話でしょうか? であれば、"/\A[^  ]*\z/" ですね。
guest

0

質問の意図がわかりかねますが

  • 数字、アルファベット大文字、小文字を最低1文字以上あり、全てが数字、アルファベット大文字、小文字の6字以上14字以下

→$pattern="/\A(?=.[0-9])(?=.[A-Z])(?=.*[a-z])[a-zA-Z0-9]{6,14}\z/";

を最低1文字以上含むことをやめて、 

  • 数字、アルファベット大文字、小文字、のみで8字以上12文字以下

とするのでしょうか?

PHP

1\A[a-zA-Z0-9]{8,12}\z

投稿2021/10/01 03:54

yambejp

総合スコア115012

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問