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

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

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

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

Q&A

解決済

4回答

596閲覧

preg_matchで、特定以上の数が含まれているの記号チェック

KenTse

総合スコア24

PHP

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

0グッド

0クリップ

投稿2019/08/22 22:49

編集2019/08/23 01:14

前提・実現したいこと

正規表現で、以下の記号を特定以上の数が含まれているの記号チェック
!"#$%&'()=-~^|`@{[*:}]<,>.?/_\

発生している問題・エラーメッセージ

何を入力しでもreutrunの値はfalseで戻る

該当のソースコード

public kigouCheck(int $number ,$value){ $escaped = preg_quote('!#$%()*+-./:;=?@[]^_`{|}', '/'); return preg_match('/['.$escaped.']{'.$number.',}/u', $value) === 1; }

試したこと

ここに問題に対して試したことを記載してください。

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

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

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

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

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

guest

回答4

0

純粋に正規表現だけでやりたければ、/([記号リスト].*){最低個数}/のような方法が考えられます。

投稿2019/08/23 01:29

maisumakun

総合スコア145184

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

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

0

pleg_splitしてcountで配列の要素数を数えて1引いてください

投稿2019/08/23 00:30

yambejp

総合スコア114843

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

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

0

ベストアンサー

これってちゃんと動くんですか?

function とか要らないんですかね?
$value はどこから値が来るんですかね?

php

1<?php 2var_dump(kigouCheck('(1:1/1.1!1#1-1=1%1$1*11)112?22;2=22@22[22]22^22|33_3`33{3}3', 24)); 3 4function kigouCheck(string $value, int $number){ 5 $escaped = preg_quote('!#$%()*+-./:;=?@[]^_`{|}', '/'); 6 $processed = preg_replace('/['.$escaped.']/u', '', $value); 7 return strlen($value) - strlen($processed) >= $number; 8}

投稿2019/08/22 23:30

編集2019/08/22 23:40
takepan1973

総合スコア821

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

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

KenTse

2019/08/23 01:25

takepan1973さん ご回答ありがとうございます。 このチェックはクラスの中に色々の場所で呼び出し予定なのfunctionはで必要です。 $valueの値takepan1973さんの指摘した通り、私が書き忘れでいた。 takepan1973さんのコード通りでちゃんと欲しい値で戻りました。 preg_matchは使わでいませんが、私の欲しい内容です、ありがとうございます。 最終的なコードは少し変更して、以下になります。 function kigouCheck(string $value, int $number){ $escaped = preg_quote('!#$%()*+-./:;=?@[]^_`{|}', '/'); $processed = preg_replace('/[^'.$escaped.']/u', '', $value); return strlen($processed) >= $number; }
guest

0

特定以上の数

特定数以上連続した場合という正規表現になっています。

投稿2019/08/22 23:05

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

KenTse

2019/08/22 23:23

te2jiさん ご回答ありがとうございます。 では、とすれば特定以上の数が含まれているの正規表現になるでしょうか?
退会済みユーザー

退会済みユーザー

2019/08/22 23:33

カウントすれば?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問