简体   繁体   中英

Using regular expressions

What is wrong with this regexp? I need it to make $name to be letter-number only. Now it doens't seem to work at all.

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

You need a quantifier otherwise it will only allow one character. For example, to require that there must be one or more characters use + :

/^[A-Za-z0-9]+$/

Your regular expression does only describe one single character. Either use a quantifier like + to allow that [A-Za-z0-9] is being repeated one or more times:

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

Or you can inverse your expression and look for characters that are not alphanumeric ( [^A-Za-z0-9] is the complement of [A-Za-z0-9] ):

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

Don't forget to look at other functions which will do what you want without the overhead of regexes. In this case, you could use ctype_alnum .

When you don't exactly know what your expression does, sometimes it helps to test it with a tool. You could try maybe Regex Coach: http://www.weitz.de/regex-coach/ :)

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM