我需要检查输入是否为UTF-8西里尔字符。这样的东西存在吗?
$this->validate($request, [
'name' => 'required|cyrillic'
]);
如果不行,我该如何实现呢?
我需要检查输入是否为UTF-8西里尔字符。这样的东西存在吗?
$this->validate($request, [
'name' => 'required|cyrillic'
]);
您需要创建自己的自定义验证规则:
https://laravel.com/docs/5.1/validation#custom-validation-rules
<?php
namespace App\Providers;
use Validator;
use Illuminate\Support\ServiceProvider;
class AppServiceProvider extends ServiceProvider
{
/**
* Bootstrap any application services.
*
* @return void
*/
public function boot()
{
Validator::extend('cyrillic', function ($attribute, $value, $parameters, $validator) {
return preg_match('/[А-Яа-яЁё]/u', $value);
});
}
/**
* Register the service provider.
*
* @return void
*/
public function register()
{
//
}
}
Validator::extend('cyrillic', function($attribute, $value, $parameters, $validator) { return preg_match('/[А-Яа-яЁё]/u', $text); }); 而不是通用的
foo` 东西。这将为问题提供一个完整的答案。 - apokryfosfunction isCyrillic($text) {
return preg_match('/[А-Яа-яЁё]/u', $text);
}
使用 @Hearner 的 答案 中的正则表达式,您可以将正则表达式添加到您的规则中,但是在使用正则表达式时,应该将规则添加到一个数组中,因为 |
字符在正则表达式中具有特殊含义:
$this->validate($request, [
'name' => array('required', 'regex:/[А-Яа-яЁё]/u')
]);
[А-Яа-я]不正确地跳过一些符号,例如:
'У ц ш щ'等。这不是一个完美的解决方案,但在我的情况下它可以正常工作:
$text_regex = '/^[А-ЯЦцУуШшЩщФфЫыРрЭэЧчТтЬьЮюЪъХхЁа-яёa-zA-Z0-9\- @%;()\$\.\,\"\']+$/';
尝试
$this->validate($request, [
'name' => ['required', 'regex:/^[А-Яа-яЁё]$/u'],
]);