ریجِکس (RegEx) در جاوا اسکریپت بهمراه مثال

ریجکس مخفف عبارت Regular Expression که ترجمه فارسی آن عبارات با قاعده می باشد. ترجمه فارسی ریجکس زیاد کمک خاصی به شما نمی کنه در نتیجه بهتره سراغ مثال های عملی بریم.

یک لحظه تصور کنید که دارید برنامه ای می‌نویسید که کاربر می‌خواهد نام کاربری خود را انتخاب کند که داری حروف، کاراکتر و اعداد باشد. همچنین تعداد کاراکترهای کاربر محدود باشد. برای اعتبار سنجی این نام کاربری باید از ریجکس استفاده کرد.

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

در ریجکس لازمه یک الگو (pattern) تعریف شود که جستجو شود. در این الگو برخی حرف‌ها (متا کاراکترها) معنای خاصی دارند.

سینتکس ریجکس بصورت // بین دو اسلش می باشد و برای نوشتن pattern ی که باهاش میشه اعتبار سنجی رو انجام داد باید داخل // نوشته بشه، با چن مثال بصورت عملی بهتون نشون میدم که باید چیکار کنید.



let str = &quot enigma love&quot
let pattern = /^ enigma/
pattern.test(str)

تو این مثال علامت ^ داخل // نشون میده که اگه کلمه enigma در اول اون اینپوتی که داریم اعتبار سنجی میکنیم بیاد به ما true برمیگردونه و ما با همین میتونیم احراز هویت انجام بدیم. (برای اعتبار سنجی pattern از متد test استفاده کردیم)

✔پاسخ تست مثال ها true است



let str = &quotlove enigma&quot
let pattern = /enigma$/
pattern.test(str)

تو این مثال علامت $ داخل // نشون میده که اگه کلمه enigma در آخر اون اینپوتی که داریم اعتبار سنجی میکنیم بیاد به ما true برمیگردونه



let str = &quot enigma 2035&quot
let pattern = /^enigma+\s+\d/
pattern.test(str)

تو این مثال بعد از کلمه enigma حتما باید یه sapce بیاد و بعدش حتما عدد بیاد، s\ متاکاراکتر space می باشد و d\ متا کاراکتر عدد می باشد و بوسیله + بهم دیگه وصل میشن



let str = &quot enigma22323&quot
let pattern = /^enigma+\S+\D/
pattern.test(str)

بعد از اینکه کلمه enigma اومد بعدش نباید space و عدد بیاد، متاکاراکتر S\ نماد نیومدن space و D\ نماد نیومدن عدد هستش، تو این مثال به ما false برگردونده میشه چون بعد از enigma عدد اومده



let str = &quotenigma1&quot
let pattern = /^enigma+\w/
pattern.test(str)

بعد از اینکه کلمه enigma اومد بعدش حتما باید یه کاراکتر حرف یا عدد یا سیمبول بیاد و اجباریه



let str = &quothi enigma&quot
let pattern = /\benigma/
pattern.test(str)

شروع enigma در هر جایی باشه true برمیگردونه



let str = &quotenigma@@&quot
let pattern = /^enigma\@/
pattern.test(str)

بعد از enigma حتما باید @ بیاد(همچنین میشه از ! # $ % ^ & * علائم هم استفاده کرد)



let str = &quotenigmah&quot
let pattern = /^enigma+h/
pattern.test(str)

بعد از کلمه enigma حداقل باید یک بار کاراکتر h بیاد



let str = &quotenigmapp&quot
let pattern = /^enigma+p{2}/
pattern.test(str)

بعد از کلمه enigma حداقل باید دوبار کاراکتر p بیاد



let str = &quotenigma1&quot
let pattern = /[bC1]/
pattern.test(str)

در داخل [ ] میتوان انواع از a تا z و 0 تا 9 و A تا Z رو قرار داد، در مثال بالا اگر حتی یکی از کاراکترهای b یا C یا 1 بیاد true برگردونده میشه


let str = &quotenigma1&quot
let pattern = /[a-z0-9]/
pattern.test(str)

از کاراکتر a تا z و یا 0 تا 9 یکیشون هم بیاد true برمیگردونه



let str = &quotenigma1&quot 
let pattern = /[a-z]+[0-9]/
pattern.test(str)

طبق این pattern هم کاراکتر از a تا z اجباری هستش هم از عدد 0 تا 9 در غیر این صورت false برمیگردونه



let email = 'enigmateam.co@gmail.com'
let pattern = /[a-z0-9]+@+[a-z]+\.+[a-z]/
pattern.test(email)

تو این مثال اخر یه ایمیل ساده رو validate کردم، اولش گفته شده از کاراکتر a تا z یا 0 تا 9 رو میتونید وارد کنید بعد از اون حتما باید @ رو وارد کنید، بعدش از کاراکتر a تا z سپس دات . و بعد از اون از کاراکتر a تا z رو کاربر باید وارد کنه


حالا وقتشه دو مورد از بهترین ولیدیشن هایی که میشه با ریجکس انجام داد و میتونید توی فرم هاتون استفاده کنید رو براتون مینویسم:

Email Validation:

/^(([^<>()\[\]\\.,;:\s@&quot]+(\.[^<>()\[\]\\.,;:\s@&quot]+)*)|(&quot.+&quot))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/


Iran Mobile Number Validation:

/(0|\+98)?([ ]|,|-|[()]){0,2}9[1|2|3|4]([ ]|,|-|[()]){0,2}(?:[0-9]([ ]|,|-|[()]){0,2}){8}/




اینم یه سایت عالی برای Generate کردن ریجکس :

https://regexr.com



امیدوارم با نوشتن این مقاله تونسته باشم تا حدودی با ریجکس در جاوا اسکریپت آشناتون کنم.