2

これは一致です:

preg_match('/[a-bA-B0-9]+/', 'username')

しかし、これはそうではありません:

preg_match('/^[a-bA-B0-9]+$/', 'username')

何故ですか?

4

3 に答える 3

3

実際の文字をテストしています'username'か?

/[a-bA-B0-9]+/文字列内の任意の場所にa、b、A、B、0,1,2,3,4,5,6,7,8,9の存在をテストします。したがって、一致abBa854Abba32し、一致しsjfsgfafnvesvます。

/^[a-bA-B0-9]+$/全体の文字列がa、b、A、B、0、1、2、3、4、5、6、7、8、9で構成されいることをテストします。したがって、一致しますabBa854Abba32が、一致しませんsjfsgfafnvesv

おそらくあなたは意味し/^[a-zA-Z0-9]+$/ました。

于 2012-04-13T02:34:03.883 に答える
2

文字クラスのアイテムの1つで始まるシーケンスに一致するように正規表現に指示したため、2番目は一致しません。文字列の最初の文字は「u」であり、文字クラス[a-bA-B0-9]に「u」はありません。

于 2012-04-13T02:34:06.497 に答える
2

ここから

のみ一致することがわかりますa

結果

1 件の一致が見つかりました:

配列 ( [0] => a )

于 2012-04-13T02:37:42.467 に答える