راکت

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

9 پاسخ

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

ثبت پرسش جدید

پاسخ‌ها

9
حسام موسوی
حسام موسوی
@hesammousavi

تخصص: طراح و برنامه نویس

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

Mahdi Afiyati
Mahdi Afiyati
@mahdi.afiyati.dalir

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

شاید پاسخ شما همین‌جا باشد

مهدی مهدوی
مهدی مهدوی
@mehdi.mahdavi97

تخصص: تازه وارد

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

مهدی
مهدی
@code2code

@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
Mahdi Naderian
@naderian.mahdi

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

علی
علی
@DevNull

تخصص: برنامه نویس بک اند,backend developer

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

سپهر اعتصامی
سپهر اعتصامی
@SepehrCoder

تخصص: طراحی و ساخت سایت و اپلیکیشن

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

مهدی حسین آبادی
مهدی حسین آبادی
@Mr_Omid

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

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

    if (!p.test(str)) {
        alert("not format");
    }
}
mobin.abdi
mobin.abdi
@mobinabdi4

تخصص: php.laravel.mysql

اگه میخوام به صورت کلی باشه هم انگلیسی و هم فارسی و عدد داشته باشه


**'address' => 'required|regex:/^[    آابپتثجچحخدذرزژسشصضطظعغفقکگلمنوهیئa-zA-Z0-9\s]+$/'**

از این استفاده کنید عالی

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

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