2016-10-27 169 views
2

我在使preg_match允許7-10位數字。數字和字母表的preg匹配

preg_match('/[0-9]{7,10}/', $studentID 

此外另一個preg_match代碼,允許最多20個字母與空間和連字符。

preg_match ('/^[a-zA-Z -]{,20}+$/i', $familyname 

這兩個都不起作用。

+0

您的陳述都沒有被正確關閉w /');' –

+0

'a-zA-Z'與'/ i'是多餘的。 '/ i'已經使正則表達式不區分大小寫,所以提供大小寫版本是沒有意義的。和'{,20} +'也沒有多大意義。 –

回答

1

您需要錨添加到第一個正則表達式,你用他們的第二圖案以同樣的方式,你必須定義爲限制量詞下界在第二圖案(比如,0至20):

$studentID = "1234567"; 
if (preg_match('/^[0-9]{7,10}$/', $studentID)) { 
    echo "$studentID matched!\n"; 
} 
$familyname = "Pupkin"; 
if (preg_match ('/^[A-Z -]{0,20}$/i', $familyname)) { 
    echo "$familyname matched!"; 
} 

PHP demo

注意{0,20}和佔有慾{0,20}+版本將工作一樣,因爲這裏的格局並沒有隨着其他消費子模式(所以,沒有必要禁止回溯了量化的子模式)。

此外,'/^[A-Z -]{0,20}$/i'是一個非常通用的姓氏子模式,你可能想要進一步精確。例如,要禁止所有空格或---------的字符串,可以使用'/^(?=.{0,20}$)[A-Z]+(?:[ -][A-Z]+)*$/i'

相關問題