2013-11-28 162 views
0
$string = 'SSM1234'; 
preg_match("SS{2,}\M+\[0-9]", $string); 

爲什麼這個正則表達式不匹配我的樣本$string這個字母數字字符串的正則表達式

我需要檢查給定的ID是否是電子郵件地址或ssmid .....還要檢查有正則表達式

if((!preg_match("/^S{2,}M+[0-9]+$/", $Forgot_field)) || (!preg_match("/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,4})$/", $Forgot_field))){ 

       $result = "Enter a valid SSM ID or Email ID"; 
} 
+0

'S {2,} M + [0-9] +' – soumer

+0

如果您包含一些您想要匹配的其他示例字符串,將會很有幫助。所有匹配的字符串是否都以「SSM」開頭或者它們是否有任何數量的S或M(或任何字母)? –

回答

1

這應該作品

$string = 'SSM1234'; 
$res = preg_match('/^S{2,}M+[0-9]+$/', $string); 

你錯過了分隔符/和您的正則表達式匹配至少3 S,而不是2.

我已經添加了開始(^)和en d($)的比賽。但它不是強制性的(這取決於你的情況)

1

SS{2,}匹配字符串的以下部分SSSSSS[...]所以至少有3 S

你需要的是:

/^S{2,}M[0-9]+$/ 

當然與缺少分隔符,如abouth提及。

此正則表達式匹配字符串一樣:

SSM1 
SSSM1 
SSSSSSM157453247 
SSSM123 

等。

如果你需要的嚴格匹配您的樣本串嘗試正則表達式:

/^S{2}M\d{4}$/ 

此正則表達式完全匹配{2}S,一個M然後{4}倍數字(\d)。

相關問題