Mahdi Afiyati
5 سال پیش توسط Mahdi Afiyati مطرح شد
8 پاسخ

ساخت ریجکس برای حروف فارسی

سلام . من میخوام یه ریجکس بنویسم که کاربر فقط بتونه اسمشو وارد کنه چون درست بودن اون اطلاعات خیلی برام مهمه که دقیق وارد شده باشه . بطور مثال فقط حروف الفبای فارسی و فاصله تایید بشه . مثل "محمد رضا".
خیلی سرچ کردم ولی به جواب درستی نرسیدم .اینو برای اعتبارسنجی خود لاراول میخوام . ممنون.


ثبت پرسش جدید
حسام موسوی
تخصص : طراح و برنامه نویس
@hesammousavi 5 سال پیش مطرح شد
0

از عبارات با قاعده یا regex میتونید استفاده کنید


Mahdi Afiyati
@mahdi.afiyati.dalir 5 سال پیش مطرح شد
0

بله خودم هم گفتم که میخوام از ریجکس استفاده کنم مشکل اینکه نمیدونم پترنش چجوره و باید چطور بنویسمش .


مهدی مهدوی
تخصص : تازه وارد
@mehdi.mahdavi97 5 سال پیش مطرح شد
1

سلام@mahdi.afiyati.dalir
سرچ کنید regex for persian alphabets موارد خوبی پیدا می کنید ، ولی حروف فارسی رو باید به یونیکد تبدیل کنید،
این راهنمای خوبیه :
https://github.com/hosseinmousavi/Regex.Persian.Language


مهدی
@code2code 5 سال پیش آپدیت شد
1

@mahdi.afiyati.dalir

از اونجایی که لاراول 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.',
]

Mahdi Naderian
@naderian.mahdi 3 سال پیش آپدیت شد
1

بهترین راه‌حل برای مشکل شما استفاده از یک پکیج حرفه‌ای است:
https://github.com/sadegh19b/laravel-persian-validation


علی
تخصص : برنامه نویس بک اند,backend dev...
@DevNull 2 سال پیش مطرح شد
0

/^[\u0600-\u06FF\s]+$/


سپهر اعتصامی
تخصص : طراحی و ساخت سایت و اپلیکیشن
@SepehrCoder 4 هفته پیش مطرح شد
0

سلام
بفرمایید کد ریجکس:
[\u0600-\u06FF\s]+
الگوی حروف فارسی


مهدی حسین آبادی
@Mr_Omid 4 هفته پیش مطرح شد
0

سلام ، این کد مربوط به جاواسکریپت هست ولی تست کردم و درست کار کرد ،‌ می تونی از روی این کد phpمد نظرت بسازی

function just_persian(str){
    var p = /^[\u0600-\u06FF\s]+$/;

    if (!p.test(str)) {
        alert("not format");
    }
}

برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام