0

次のコード スニペットがありますが、そのような正規表現が一致する理由がわかりません。

<?php

$string = "0123456789";

if(preg_match('/[a-zA-Z]*/', $string) === 1) {
    echo "match";

}

else {
    echo "not match";

}

?>

スクリプトを実行すると、常に「一致」が返されます。$string 変数にアルファ文字がないため、「一致しません」と出力されると思います。何か案は?

4

3 に答える 3

2
if(preg_match('/[a-zA-Z]/', $string) === 1) {
    echo "match";
}
else {
    echo "not match";

*は 0 以上を意味するため、文字列の先頭にある 0 文字に一致していました。1 に一致させたいので、 を取り除き*ます。

于 2012-11-15T08:09:05.203 に答える
2

*量指定子を使用しているため、一致します。以下を使用すると一致しません。

/[a-zA-Z]+/

これは、/[a-zA-Z]*/0 回の出現にも一致するためです。

于 2012-11-15T08:09:17.440 に答える
2

これを試して

/^[A-z]+$/

[Az] は、すべてのアルファベット (小文字と大文字の両方) に一致します。

^ と $ は、これらのアルファベットのみが一致することを確認します。

于 2012-11-15T08:10:51.767 に答える