I am trying to match an alphanumeric String in PHP 8.2 using preg_match
.
$str = '\\\\';
echo preg_match("/^[A-z0-9]*$/", $str);
The output of the following code is 1
, indicating that the pattern matches the subject.
How is it possible, that the character class [A-z0-9]
matches the backslashes, which are not contained in it?
CodePudding user response:
Your regex contains A-z
which means any any character between 65 and 122 (ascii table). \
is 92 which falls within that range. A tool like regex101 can help clarify what is included in regexes
To fix update the regex to be /^[A-Za-z0-9]*$/
which specifies only letters or numbers