<?php
$string = 'user34567';
if(preg_match('/user(^[0-9]{1,8}+$)/', $string)){
echo 1;
}
?>
私は、文字列がユーザーは8つのシンボルの最大可能数で、次の単語を持っているかどうかを確認したいです。正規表現
<?php
$string = 'user34567';
if(preg_match('/user(^[0-9]{1,8}+$)/', $string)){
echo 1;
}
?>
私は、文字列がユーザーは8つのシンボルの最大可能数で、次の単語を持っているかどうかを確認したいです。正規表現
あなたが実際に非常に近いです:
if(preg_match('/^user[0-9]{1,8}$/', $string)){
「文字列の先頭に一致しなければならない」ためのアンカーは、「ユーザー」リテラルに続いて、前にすべての方法でなければなりません。文字セット[0-9]
と乗数{1,8}
を指定します。最後に、「文字列の最後に一致する必要があります」アンカーで終了します。あなたの元の式に
いくつかのコメント:
^
ので、この式の中のどこにそれを書いたが初めは+
が期待される結果が得られないであろう、文字列の先頭にマッチします乗算器。 {1,8}
も1つですが、式の後に1つの乗数しか使用できません。Btw [0-9]
の代わりに\d
を使用することもできます。この特定の1が保存されませんが、それは、正規表現を短縮し、自動文字グループです
あなたが接近していた、ここにあなたの正規表現のすべての文字数が多すぎ;-)です:/^user[0-9]{1,8}$/
代わりに、次の正規表現を試してください。
/^user([0-9]{1,8})$/
この正規表現を使用しますを使用することにより
/^user\d{1,8}$/
をと$
の場合は、パターンが行の唯一のものである場合にのみ一致します。それはあなたが欲しいものですか?その場合は、次のようにします。
preg_match('/^user[0-9]{1,8}[^0-9]$/' , $string);
あなたはどこにでも行でこのパターンを見つけたい場合は、私がしようとするだろう。いつものように
preg_match('/user[0-9]{1,8}[^0-9]/' , $string);
を、あなたは何をするRegexPalのようなリファレンスツールを使用する必要があります正規表現を単独でテストします。