匹配输入到掩码

时间:2012-08-21 01:37:22

标签: php input preg-match mask

我需要一些帮助,我想检查输入是否与面具匹配

面具是这样的: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!';
}

它没有成功。谢谢你的帮助。

2 个答案:

答案 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}$#