CodeIgniter中文单词格式验证

时间:2016-07-03 09:07:08

标签: php regex codeigniter validation non-english

我在CodeIgniter中使用表单验证库。下面的配置尝试包括所有数字,英文单词,中文单词和空格。但它不起作用。

$config = array(
                array(
                       'field' => 'keywords',
                       'label' => 'keywords',
                       'rules' => 'regex_match[/[a-zA-Z0-9 \u4e00-\u9fa5]+$/]'
                    )
                );

但是,如果我推断出它的工作,那就可以了。

$config = array(
                    array(
                           'field' => 'keywords',
                           'label' => 'keywords',
                           'rules' => 'regex_match[/[a-zA-Z0-9 ]+$/]'
                        )
                    );

2 个答案:

答案 0 :(得分:1)

你有正则表达式有三个问题:

  • 验证正则表达式应该在字符串的开头匹配,因此,您需要字符串锚^\A的开头。此外,建议将$替换为字符串锚\z的最末端(因为$也匹配字符串中的最后换行符号之前)。
  • Revo是对的,PHP正则表达式引擎不支持\uXXXX表示法。但是,您不必在此处指定Unicode代码点的范围。 PHP中的中文字符PCRE正则表达式can be defined with a Unicode property \p{Han}
  • 要使PCRE正则表达式能够识别Unicode,您需要使用/u修饰符。

所以,使用

/\A[a-zA-Z0-9\s\p{Han}]+\z/u

或者(稍微不那么安全),

/^[a-zA-Z0-9\s\p{Han}]+$/u

答案 1 :(得分:0)

PCRE不支持\uFFFF语法。请改用\x{FFFF}

/[a-zA-Z0-9 \x{4e00}-\x{9fa5}]+$/