2012-01-15 5 views
0

У меня есть preg_match заявление так:PHP preg_match не распознает правильно?

preg_match("/^[0-9a-zA-z\.\_\-]$/", $_POST['username']) 

Но это всегда приравнивается к ложным.

"aaa" - false 
"#$&Y#" - false 
" a#*$7"- false 

ПОЧЕМУ

+0

Действительно ли ваш ввод как таковой - т. Е. Окруженный двойными кавычками? Если да, то неудивительно, что это не сработало. – fge

+0

Кроме того, нет необходимости избегать точки, подчеркивания или тире (поскольку вы помещаете ее в конец) здесь: '[0-9a-zA-Z ._-]' – fge

+0

@fge Not правда. Посмотрите на ответ Богата Адамса. Оно работает. –

ответ

5

Это только соответствие один символ, вам нужен + так, чтобы он соответствовал одному или более.

preg_match("/^[0-9a-zA-z\.\_\-]+$/", $_POST['username']) 
+2

Также обратите внимание на 'A-z' - и этого' .', '_' и' -' не нужно экранировать – fge

+0

А! Большое спасибо! –

Смежные вопросы