<?php
$string = 'user34567';
if(preg_match('/user(^[0-9]{1,8}+$)/', $string)){
echo 1;
}
?>
文字列にuserという単語が続き、最大8記号の数字が続くかどうかを確認したいと思います。
<?php
$string = 'user34567';
if(preg_match('/user(^[0-9]{1,8}+$)/', $string)){
echo 1;
}
?>
文字列にuserという単語が続き、最大8記号の数字が続くかどうかを確認したいと思います。
あなたは実際に非常に近いです:
if(preg_match('/^user[0-9]{1,8}$/', $string)){
「文字列の先頭で一致する必要がある」のアンカーは、一番前にあり、その後に「user」リテラルが続く必要があります。次に、文字セット[0-9]
と乗数を指定します{1,8}
。最後に、「文字列の最後で一致する必要がある」アンカーで終了します。
元の表現に関するいくつかのコメント:
^
文字列の先頭に一致するため、この式内の他の場所に文字列を記述しますが、先頭では期待どおりの結果が得られません。+
は乗数です。{1,8}
も1つですが、式の後に使用できる乗数は1つだけですところで、あなたの代わりに[0-9]
を使用することもできます\d
。これは正規表現を短縮する自動文字グループですが、この特定の文字はあまり多くの文字を保存しません;-)
とを使用する^
と$
、パターンがライン上の唯一のものである場合にのみ一致します。それはあなたが望むものですか?その場合は、以下を使用してください。
preg_match( '/^user[0-9]{1,8}[^0-9]$/' , $string );
このパターンを行のどこかで見つけたい場合は、次のことを試してください。
preg_match( '/user[0-9]{1,8}[^0-9]/' , $string );
いつものように、正規表現のテストを単独で行うには、RegexPalなどの参照ツールを使用する必要があります。
あなたは近くにいました、ここにあなたの正規表現があります:/^user[0-9]{1,8}$/
代わりに、次の正規表現を試してください。
/^user([0-9]{1,8})$/
この正規表現を使用します。
/^user\d{1,8}$/