laravel 正则表达式验证 utf-8(土耳其字母)

laravel regex validation utf-8 (Turkish letter)

我正在使用 laravel 编写网站代码。但我陷入了正则表达式验证,因为我的语言看起来不受正则表达式支持(可能我不能)。有很多方法可以使用 PHP 检查正则表达式,但我想使用 Laravel(4.2) 验证器检查规则。这是我不工作的代码。

 ........
$name = Input::get('academy_name');
    $rules = array(
        'academy_name' =>  array('required','unique:academies,name,' . $name,'regex:/^([a-zA-Z0-9şŞıİçÇöÖüÜĞğ]+[\ \-]?)+[a-zA-Z0-9]+$/')
    );
    $validate = Validator::make(Input::all(), $rules);
    $messages = $validate->messages();
    if ($validate->fails()) {
.............

如您所见,我想使用“üğÜĞişİŞçöÇÖı”字母。感谢所有的回答和想法。

编辑: @henrik 根据您的建议,我将研究重点放在 PHP 上,终于找到了答案。这非常简单,我只是将 /im 添加到正则表达式的末尾,它就像一个魅力。这是我的最终验证: $rules = array( 'resource_name' => array('required', 'unique:resources,name,' . $name, 'regex:/^([0-9a-zA-ZÇŞĞÜÖİçşğüöı]+[\ \-]?)+[a-zA-Z0-9]+$/im'), 'category' => 'required', 'file' => 'required', 'class' => 'required' );

尝试验证英语以外的任何语言时使用 Unicode 字符验证。

例如,表达式/^[\u0041-\u007A]+$/将验证从0041到007A的任何字符,对应于拉丁字母表。

请参阅 this chart 以确定您的语言和相应的字符范围。

编辑:正如下面的评论所示,这与 laravel

无关

您可以使用 \p{L} 允许任何 Unicode 字符或 \p{Latin} 允许任何拉丁字母:

/^([0-9\p{Latin}]+[\ \-]?)+[a-zA-Z0-9]+$/

http://www.regular-expressions.info/unicode.html