これは一致です:
preg_match('/[a-bA-B0-9]+/', 'username')
しかし、これはそうではありません:
preg_match('/^[a-bA-B0-9]+$/', 'username')
何故ですか?
これは一致です:
preg_match('/[a-bA-B0-9]+/', 'username')
しかし、これはそうではありません:
preg_match('/^[a-bA-B0-9]+$/', 'username')
何故ですか?
実際の文字をテストしています'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]+$/
ました。
文字クラスのアイテムの1つで始まるシーケンスに一致するように正規表現に指示したため、2番目は一致しません。文字列の最初の文字は「u」であり、文字クラス[a-bA-B0-9]に「u」はありません。