我需要一些帮助,我想检查输入是否与掩码匹配
口罩是这样的:12.345.678/9012-34(xx.xxx.xxx/xxxx-xx)
到目前为止,我一直在尝试这个
$string = '12.345.678/9012-34';
if(!preg_match('/^[0-9]{2}.[0-9]{3}.[0-9]{3}/[0-9]{4}-[0-9]{2}$/', $string)) {
echo 'Doesnt match the mask!';
}
结果没有成功。谢谢你的帮助。
您需要转义要匹配的/
和.
文本,因为您使用前者作为正则表达式分隔符,而.
在正则表达式中具有特殊含义(通常用于匹配除'n
之外的所有字符)。
if(!preg_match('/^'d{2}.'d{3}'.'d{3}'/'d{4}-'d{2}$/', $string)) {
echo 'Doesnt match the mask!';
}
我还用了'd
而不是[0-9]
,因为它不太容易阅读和理解,而且它们的意思是一样的。
以下是我将如何更改它:
/^[0-9]{2}.[0-9]{3}.[0-9]{3}/[0-9]{4}-[0-9]{2}$/
1) 您可以使用'd
快捷方式获取数字:
/^'d{2}.'d{3}.'d{3}/'d{4}-'d{2}$/
2) 点(句点)是一个特殊字符,可以匹配任何字符,因此您需要对其进行转义。
/^'d{2}'.'d{3}'.'d{3}/'d{4}-'d{2}$/
3) 正斜杠是您的分隔符,因此应该在内部转义;或者,使用不同的分隔符:
/^'d{2}'.'d{3}'.'d{3}'/'d{4}-'d{2}$/
#^'d{2}'.'d{3}'.'d{3}/'d{4}-'d{2}$#