سلام . من میخوام یه ریجکس بنویسم که کاربر فقط بتونه اسمشو وارد کنه چون درست بودن اون اطلاعات خیلی برام مهمه که دقیق وارد شده باشه . بطور مثال فقط حروف الفبای فارسی و فاصله تایید بشه . مثل "محمد رضا".
خیلی سرچ کردم ولی به جواب درستی نرسیدم .اینو برای اعتبارسنجی خود لاراول میخوام . ممنون.
بله خودم هم گفتم که میخوام از ریجکس استفاده کنم مشکل اینکه نمیدونم پترنش چجوره و باید چطور بنویسمش .
سلام@mahdi.afiyati.dalir
سرچ کنید regex for persian alphabets موارد خوبی پیدا می کنید ، ولی حروف فارسی رو باید به یونیکد تبدیل کنید،
این راهنمای خوبیه :
https://github.com/hosseinmousavi/Regex.Persian.Language
از اونجایی که لاراول validation از تابع preg_match توی regex استفاده میکنه تو نمیتونی از یونیکد استفاده کنی یا باید به فرم زیر عمل کنی
'regex:/^[ آابپتثجچحخدذرزژسشصضطظعغفقکگلمنوهیئ\s]+$/'
یا اگر میخواهید به صورت یونیکد عمل کنید
'name' => 'uni_regex:^[\x{0621}-\x{0628}\x{062A}-\x{063A}\x{0641}-\x{0642}\x{0644}-\x{0648}\x{064E}-\x{0651}\x{0655}\x{067E}\x{0686}\x{0698}\x{06A9}\x{06AF}\x{06BE}\x{06CC} ]+$',
باید در provider یه validation جدید تعریف کنی که از mb_ereg_match و توی یه پروای
public function boot()
{
$this->app['validator']->extend('uni_regex', function ($attribute, $value, $parameters, $validator) {
return mb_ereg_match($parameters[0], $value);
});
$this->app['validator']->replacer('uni_regex', function ($message, $attribute, $rule, $parameters) {
$message = str_replace(':attribute', $attribute, $message);
return $message;
});
}
و در آخر هم فایل خط زیر رو به فایل /resources/lang/en/validation.php اضافه کنیم
return [
'uni_regex' => 'The :attribute format is invalid.',
]
بهترین راهحل برای مشکل شما استفاده از یک پکیج حرفهای است:
https://github.com/sadegh19b/laravel-persian-validation
سلام ، این کد مربوط به جاواسکریپت هست ولی تست کردم و درست کار کرد ، می تونی از روی این کد phpمد نظرت بسازی
function just_persian(str){
var p = /^[\u0600-\u06FF\s]+$/;
if (!p.test(str)) {
alert("not format");
}
}
اگه میخوام به صورت کلی باشه هم انگلیسی و هم فارسی و عدد داشته باشه
**'address' => 'required|regex:/^[ آابپتثجچحخدذرزژسشصضطظعغفقکگلمنوهیئa-zA-Z0-9\s]+$/'**
از این استفاده کنید عالی
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟