2

入力がマスクと一致するかどうかを確認したいのですが、少し助けが必要です

マスクはこれです: 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!';
}

うまくいきませんでした。助けてくれてありがとう。

4

2 に答える 2

3

前者を正規表現区切り文字に使用しており、正規表現では特別な意味があるため (通常は を除くすべての文字に一致するため) 、一致するリテラル/とをエスケープする必要があります。..\n

if(!preg_match('/^\d{2}.\d{3}\.\d{3}\/\d{4}-\d{2}$/', $string)) {
     echo 'Doesnt match the mask!';
}

また、読んで理解するのが少なく、同じことを意味するため、\d代わりに使用しました。[0-9]

于 2012-08-21T01:39:56.170 に答える
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) ドット (ピリオド) は特殊文字で、任意の文字に一致するため、エスケープする必要があります。

/^\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}$#
于 2012-08-21T01:42:39.887 に答える