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