$pattern="/[a-z]*[a-z]*/i";
if(!preg_match($pattern, $value)){
$this->error_name="The name should contain at least two letters.";
}
我試圖檢查用戶是否至少輸入了兩個字母的名字。所以基本上,他不能輸入他的名字111111111111 ..它必須有兩個字母。正則表達式,使用php
我寫的正則表達式不起作用。爲什麼?
$pattern="/[a-z]*[a-z]*/i";
if(!preg_match($pattern, $value)){
$this->error_name="The name should contain at least two letters.";
}
我試圖檢查用戶是否至少輸入了兩個字母的名字。所以基本上,他不能輸入他的名字111111111111 ..它必須有兩個字母。正則表達式,使用php
我寫的正則表達式不起作用。爲什麼?
$pattern="/[a-z].*[a-z]/i";
if(!preg_match($pattern, $value)){
$this->error_name="The name should contain at least two letters.";
}
您的代碼並沒有因爲*
工作意味着零次或多次,所以它也會匹配一個或一個字符。
如果您只想測試字符串是否包含兩個字母,則不需要'。*'。 –
它只能這樣工作:aa1111111111 ..但是如果用戶名是a1111111111a ..它也是有效的 –
通過在兩者之間添加'。*'來修正。 – Jeroen
試一下這個(你的代碼修改):
$pattern="/^[a-z]{2}.*/i";
if(!preg_match($pattern, $value)){
$this->error_name="The name should contain at least two letters.";
}
它可以用於這樣的事情a11111111111a –
您可以使用:
$pattern="/^[a-z]{2,}$/i";
這將確保該名稱具有唯一的字母和至少有2個字母的名稱。
編輯:
看起來你想要的名稱包含至少兩個字母,可以包含其他非字母以及:
$pattern="/^.*[a-z].*[a-z].*$/i";
但它也可以包含「'alpha」以外的字符。 – Cylian
但我認爲這意味着,至少有兩個字母開始接近另一個...此用戶名也是有效的a111111111b –
$pattern="/^([a-z]{2})|([a-z].*[0-9].*[a-z].*).*/i";
我想答案應該是一個上面..你的答案給了我一個線索..
現在它也將匹配這些名字:
a1111111111111a
因爲'*'的意思是「零個或多個」。 '111111'有零個字母,所以它匹配。 http://www.regular-expressions.info/repeat.html –