蛋糕PHP验证正则表达式


CakePHP Validation Regex

我有一个快速的正则表达式问题,我想有人可能知道他们的头顶。如果我只想允许大/小字母数字、空格、标点符号和引号,那么 CakePHP 验证的正则表达式是什么?这是我所拥有的,但它是关闭的:

 'rule' => array('custom', '/[a-z0-9'x20'x21'x2E'x3A'x3B'x3F'x2C'x27'x22]{0,600}/i'),

据我所知,a-z0-9 涵盖了字母数字,但 ''xXX 不应该用 ASCII 十六进制代码覆盖标点符号吗?然后 {0,600] 表示 0-600 个字符的长度,i 表示上限和下限。我错过了什么?

例如:有效

:这是一个"有效文本",其中包含 ' 和标点符号!

无效:这是一个明显的 XSS 尝试

^(['d'w's?!'.;:,'"'/'[']'(')='+-]*)$

应该工作吗?您应该提供您认为有效的文本和无效的文本的示例。

preg_match('/^(['d'w's?!'.;:,'"'/'[']'(')='+-]*)$/', $string);

只要你知道你想要它是ASCII,只需使用字符范围

$input = "this is a 'n string'n";
echo preg_match("/^[ -~]{0,600}$/", $input);  // output is 0 (false)
$input = "this is a string";
echo preg_match("/^[ -~]{0,600}$/", $input);  // output is 1 (true)

每当我处理ASCII时,我发现特定范围要容易得多。所以基本上你希望字符串的开头是空格和 ~ 中的任何内容,这些都是可见字符。 然后你有 0-600 个字符的限制,$ 表示字符串的结尾