Использование регулярных выражений - PullRequest
4 голосов
/ 30 мая 2010

Что не так с этим регулярным выражением? Мне нужно, чтобы $ name было только буквой. Теперь это, похоже, не работает вообще.

 if (!preg_match("/^[A-Za-z0-9]$/",$name)) {
  $e[]="name must contain only letters or numbers";
 }

Ответы [ 4 ]

9 голосов
/ 30 мая 2010

Вам нужен квантификатор, иначе он позволит использовать только один символ. Например, чтобы требовать, чтобы был один или несколько символов, используйте +:

/^[A-Za-z0-9]+$/
2 голосов
/ 30 мая 2010

Не забудьте взглянуть на другие функции, которые будут делать то, что вы хотите, без лишних регулярных выражений. В этом случае вы можете использовать ctype_alnum.

2 голосов
/ 30 мая 2010

Ваше регулярное выражение описывает только один единственный символ. Либо используйте квантификатор , например +, чтобы разрешить повторение [A-Za-z0-9] один или несколько раз:

if (!preg_match("/^[A-Za-z0-9]+$/",$name))

Или вы можете инвертировать свое выражение и искать символы, которые не являются буквенно-цифровыми ([^A-Za-z0-9] является дополнением к [A-Za-z0-9]):

if (preg_match("/[^A-Za-z0-9]/",$name))
1 голос
/ 30 мая 2010

Когда вы точно не знаете, что делает ваше выражение, иногда это помогает проверить его с помощью инструмента. Вы можете попробовать Regex Coach: http://www.weitz.de/regex-coach/:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...