我需要一些帮助,我想检查输入是否与面具匹配
面具是这样的: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!';
}
它没有成功。谢谢你的帮助。
答案 0 :(得分:2)
您需要转义要匹配的/
和.
文字,因为您使用前者作为正则表达式分隔符,而.
在正则表达式中具有特殊含义(通常匹配除\n
)之外的所有字符。
if(!preg_match('/^\d{2}.\d{3}\.\d{3}\/\d{4}-\d{2}$/', $string)) {
echo 'Doesnt match the mask!';
}
我还使用了\d
代替[0-9]
,因为它不太适合阅读和理解,它们的意思相同。
答案 1 :(得分:1)
以下是我将如何更改它:
/^[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)Dot(句点)是一个特殊字符,可以匹配任何字符,因此您需要将其转义。
/^\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}$#