问:我正在验证标记为“标签”的表单字段的表单输入,用户在其中输入描述上传图像的标签。在这个验证之后,我 preg_replace() 任何带逗号的空格,这样这个输入就是 csv 输入。
无论输入如何,preg_match() 都会返回 0。我做错了什么?
我希望我的标签包括:
以任何字母(无论大小写)和/或数字或空格开头
包含任何字母、数字、空格、逗号和连字符
以任何字母、数字、空格或逗号结尾
这是我的正则表达式字符串:
$regex = '/^[ ,][a-zA-Z0-9]+(?:[ ,-]+[a-zA-Z0-9])[ ,]$/';
这是我的 preg_match 语句包含在 if 语句中 else 退出程序(当 preg_match 返回 0 时)。
preg_match($regex, $_POST['tags']) == 1;
以下是一些示例输入以及它们是否应该有效。
绿色轮廓、三角形、2d*% => 无效
绿色轮廓,三角形,2d => 有效
绿色轮廓三角形 2d => 有效
我已经在Regex101尝试了实时正则表达式工具,但我不知道出了什么问题。
答:在那种情况下,我认为这样的事情应该有效:
/^[\w, \-]+$/g
注意:我删除了\d我之前添加的,因为它已经包含在\w.