2013-11-28 126 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)。

相关问题