此字母数字字符串的正则表达式

时间:2013-11-28 08:21:47

标签: php regex

$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";
}

2 个答案:

答案 0 :(得分:1)

这应该有效

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

您错过了分隔符/,并且您的正则表达式匹配至少3 S,而不是2。

我还添加了匹配的开头(^)和结束($)。但这不是强制性的(取决于你的情况)

答案 1 :(得分:1)

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

您需要的是:

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

当然有缺失的分隔符,如上所述。

此正则表达式匹配以下字符串:

SSM1
SSSM1
SSSSSSM157453247
SSSM123

等等。

如果您需要一个严格匹配您的示例字符串的正则表达式,请尝试:

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

此正则表达式与{2}SM次数字{4}完全匹配\d次。