<?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}
也是一個,但在表達式後只能使用一個乘數順便說一句,而不是[0-9]
你也可以使用\d
。它是縮短了正則表達式的自動字符組,雖然這尤其是一個不保存所有的字符太多;-)
你接近,這裏是你的正則表達式:/^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做你的正則表達式測試是孤立的。