$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 :(得分:1)
这应该有效
$string = 'SSM1234';
$res = preg_match('/^S{2,}M+[0-9]+$/', $string);
您错过了分隔符/
,并且您的正则表达式匹配至少3 S
,而不是2。
我还添加了匹配的开头(^
)和结束($
)。但这不是强制性的(取决于你的情况)
答案 1 :(得分:1)
此SS{2,}
匹配字符串SSS
或SSS[...]
的以下部分,因此至少有3 S
。
您需要的是:
/^S{2,}M[0-9]+$/
当然有缺失的分隔符,如上所述。
此正则表达式匹配以下字符串:
SSM1
SSSM1
SSSSSSM157453247
SSSM123
等等。
如果您需要一个严格匹配您的示例字符串的正则表达式,请尝试:
/^S{2}M\d{4}$/
此正则表达式与{2}
,S
和M
次数字{4}
完全匹配\d
次。