2016-11-05 28 views
-2

文字列内で文字が2回以上出現するかどうかを確認する正規表現とは何ですか?例:「aab」は許可されますが、「aaa」または「aaba」は許可されません。文字列内にX倍以上の文字があるかどうかを確認する正規表現

preg_match()関数は有効な入力(3つの繰り返し文字未満)に対して1を返し、それ以外の場合は0を返すように、有効な入力(3つの繰り返し文字がない場合)

ありがとうございます!

+0

使用 'substr_count($ strの、 "A")'の代わりに正規表現の。 – Mohammad

+0

もし文字列が 'aabaabaa'ならば、繰り返しは決して2以上ではないので許されますか? – chris85

+0

今すぐ指定します。 「アババ」は受け入れてはならない。 – liberty

答えて

1

この正規表現では、3回以上(さらに多くを得るために3つを打つ必要があるため)以上の文字を見つけることができます。

(.)\1{2} 

正規表現のデモ:https://regex101.com/r/WmUPWW/1

PHPの使用法:

foreach(array('aaa', 'aab') as $string) { 
    if(preg_match('/(.)\1{2}/', $string)) { 
     echo $string . ' doesnt match :(' . "\n"; 
    } else { 
     echo $string . ' matches'. "\n"; 
    } 
} 

PHPデモ:https://eval.in/672382

+1

デモが大好きです。プルーフ内にプルーフがあります;-) –

+0

preg_matchが存在すればそれを1に戻す方法はありますか?私はいくつかの表現をループしたいので尋ねるだけです。 – liberty

+0

@libertyそれはそれが何をしているのか、それが条件付きになる理由です。 https://eval.in/672387マニュアルごとに: 'preg_match()は、与えられた件名とパターンが一致すれば1を返し、そうでなければ0を返し、エラーが発生した場合はFALSEを返します。または戻り値を変数、https://eval.in/672389に格納するデモ – chris85

関連する問題