我有一个用户输入,如果字符在白名单上,就会检查它。
我的正则表达式:
[A-Za-z0-9_~\-!@#\s\$%\^&\*\(\)\=\:\;\+\°\´\[\]\{\}\§\"\'\ß\ä\ö\ü\%\.\,\>\<\|\€]+$我的代码部分:
$check = preg_match($pattern, trim($input));现在,当$input变量具有abc²³值时,输入将被阻塞。但是当它的值为abc²³def时,内容不会被阻塞。
如何检查字符串的每个字符?
发布于 2015-04-26 10:03:19
你必须在一开始就锚定要塞:
^[A-Za-z0-9_~\-!@#\s\$%\^&\*\(\)\=\:\;\+\°\´\[\]\{\}\§\"\'\ß\ä\ö\ü\%\.\,\>\<\|\€]+$您还可以简化一点:
^[\w~\-!@#\s$%\^&*()=:;+°´\[\]{}§"'ßäöü%.,><|€]+$甚至使用unicode属性:
^[-\p{L}\p{N}_~!@#\s$%\^&*()=:;+°´\[\]{}§"'%.,><|€]+$https://stackoverflow.com/questions/29876229
复制相似问题