这个正则表达式有什么问题?我需要它才能使$ name成为字母编号。现在它似乎根本不起作用。
if (!preg_match("/^[A-Za-z0-9]$/",$name)) {
$e[]="name must contain only letters or numbers";
}
答案 0 :(得分:9)
你需要一个量词,否则它只允许一个字符。例如,要求必须有一个或多个字符使用+
:
/^[A-Za-z0-9]+$/
答案 1 :(得分:2)
您的正则表达式仅描述一个单个字符。使用类似+
的{{3}}来允许[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))
答案 2 :(得分:2)
不要忘记在没有正则表达式开销的情况下查看其他可以执行您想要的功能。在这种情况下,您可以使用ctype_alnum
。
答案 3 :(得分:1)
如果你不确切地知道你的表达是什么,有时候用工具测试它会有所帮助。您可以尝试使用Regex Coach:http://www.weitz.de/regex-coach/:)