У меня есть preg_match заявление так:PHP preg_match не распознает правильно?
preg_match("/^[0-9a-zA-z\.\_\-]$/", $_POST['username'])
Но это всегда приравнивается к ложным.
"aaa" - false
"#$&Y#" - false
" a#*$7"- false
ПОЧЕМУ
У меня есть preg_match заявление так:PHP preg_match не распознает правильно?
preg_match("/^[0-9a-zA-z\.\_\-]$/", $_POST['username'])
Но это всегда приравнивается к ложным.
"aaa" - false
"#$&Y#" - false
" a#*$7"- false
ПОЧЕМУ
Это только соответствие один символ, вам нужен +
так, чтобы он соответствовал одному или более.
preg_match("/^[0-9a-zA-z\.\_\-]+$/", $_POST['username'])
Также обратите внимание на 'A-z' - и этого' .', '_' и' -' не нужно экранировать – fge
А! Большое спасибо! –
Действительно ли ваш ввод как таковой - т. Е. Окруженный двойными кавычками? Если да, то неудивительно, что это не сработало. – fge
Кроме того, нет необходимости избегать точки, подчеркивания или тире (поскольку вы помещаете ее в конец) здесь: '[0-9a-zA-Z ._-]' – fge
@fge Not правда. Посмотрите на ответ Богата Адамса. Оно работает. –