我正在尝试验证字符串(PHP& Regex),我希望选项A成功验证,但选项B根本不验证:
a) fsadgfsd!^_-@<><
OR
fsadgfsd!^_-@<>><
b) fsadgfsd!^_-@<>&;
OR
fsadgfsd!^_-@<>;&&;
到目前为止,我有这个:
/^[a-zA-Z0-9 \!\^\_\@\<\>-]+$/
除了HTML编码的子字符串&lt;和&gt;在这个阶段,我正在用它打砖墙,任何帮助都非常感激。
基本上,除了我现有的与我的特殊字符匹配的正则表达式之外,我还需要能够匹配其中任何一个的确切子串。或者&gt;但不符合&amp;要么 ;他们自己的角色。
由于我正在使用的代码中存在限制,我无法在验证数据之前对数据进行解码...
答案 0 :(得分:1)
$regex = '/^[\w !\^@<>-]+$/';
$string = 'fsadgfsd!^_-@<>><';
$string = html_entity_decode($string);
if (preg_match($regex, $string))
echo 'ok';
// echo ok
$string = 'fsadgfsd!^_-@<>;&&;';
$string = html_entity_decode($string);
if (preg_match($regex, $string))
echo 'ok';
// echo nothing
\ w是[a-zA-Z0-9 _]
的快捷方式编辑:没有html_entity_decode
$regex = '/^([\w !\^@<>-]*(&[glt]+;)*)+$/';
$string = 'fsadgfsd!^_-@<>><';
if (preg_match($regex, $string))
echo 'ok';
// echo ok
echo '-------------';
$string = 'fsadgfsd!^_-@<>;&&;';
if (preg_match($regex, $string))
echo 'ok';
// echo nothing