验证字段的最佳正则表达式是什么?

时间:2010-09-04 17:27:28

标签: php regex user-generated-content

我在用户输入的字段上使用正则表达式,以确保它们输入了1到20个字符。

以下是代码:

$post_validations = array("title" => '/^[[:alnum:][:punct:][:space:]]{1,100}$/');

但是每当用户输入外来字符或MS Word中的特殊引号字符时(我无法将其粘贴到此处,它将其转换为正常引用!)正则表达式不会返回true,它会显示一个错误。

我想知道什么是最好的正则表达式?

由于

1 个答案:

答案 0 :(得分:6)

如果您只想知道它是1到20个字符,为什么不使用strlen()

 $length = strlen($title);
 if($length >= 1 and $length <=20)
      echo "VALID";
 else
      echo "Invalid";

[编辑]:检查aplhanumeric或puctuation:

如果您还想检查字符串是否包含可能导致问题的任何不可打印字符,请使用ctype_graph()

 if(ctype_graph ($title))
      echo "Only alphanumeric or punctuation";
 else
      echo "Invalid non-printable characters found";

[编辑2]:

如果您还希望验证空格,只需使用:

if(ctype_graph(str_replace(' ', '',$title))