编程语言
首页 > 编程语言> > PHP regex和号问题

PHP regex和号问题

作者:互联网

我使用以下正则表达式来验证用户名(注册表格中的输入类型文本),以确保用户名仅包含字母数字字符,点,破折号或下划线.

if (!preg_match('/^[a-zA-Z0-9\.\_-]+$/',$my_name)) {  echo 'no_valid'; }

当我在文本字段中输入例如%或#或@时,我正确地返回了错误消息,即它不是有效的用户名,同时也接受了有效字符(.-_),因此直到我之前,它似乎都可以正常工作类型&或,然后可以使用preg_match输入我之前已排除的任何无效字符.

谁能告诉我为什么会这样,如何解决这个问题?

解决方法:

问题出在别的地方.你的表达是正确的.我用PHP测试过.由于它与’&’一起发生字符,我猜想是您的数据在发送前不会转换为URL安全字符.尝试在JS中使用encodeURI()函数.

标签:preg-match,php,regex
来源: https://codeday.me/bug/20191030/1970958.html