احمد نادری

توسعه دهنده فول استک

author
author

احمد نادری

توسعه دهنده فول استک

عبارات باقاعده RegEx در PHP

عبارت باقاعده (Regular Expression یا به اختصار RegEx) رشته‌ای از کاراکترهاست که یک جست‌وجو در رشته‌ها را مشخص می‌کند.

کارکتر

\d : فقط یک رقم کارکتر عددی

\D: فقط یک رقم کارکتر غیر عددی

\w : فقط یک کارکتر کلمه ای

\W: فقط یک کارکتر غیر کلمه ای

\s: فقط یک کارکتر فاصله یا تب یا خط جدید

\S: فقط یک کارکتر غیر فضای خالی


تعداد

+ : یک یا بیشتر

{۲} :  دقیقا ۲ بار

{۳,۵} :  بین ۳ تا ۵ بار

{۴,} : چهار بار یا بیشتر

*: صفر بار یا بیشتر

? : صفر یا یک بار


منطق

| : OR(یا)

( … ) :  ی گروه گیرا . میتواند داخل آن یک شرط باشد . مثلا H(i|ello)

\۱ :  محتویات گروه گیرای ۱

\۲ : محتویات گروه گیرای ۲

(?:…) : گروه ناگیرا یا گروهی که محتویات آن به صورت جداگانه قابل دریافت نیست


کلاس کارکتر

[…] : یکی از کارکترهای داخل براکت

[a-z] :  یکی از کارکتر های الفبا از aتا z

[*a-z] :  یکی از کارکتر های الفبا غیر از aتا z

. : هر کارکتری جز خط جدید

\. : کارکتر نقطه

\ : برای کارکتر های خاص استفاده میشود . مثل \}\{

^: شروع رشته

$ : پایان رشته


lookaround

شرط‌هایی را روی رشته اعمال می‌کنند تا مطمئن شویم قبل یا بعد رشته، یک رشته‌ی خاص آمده است یا نیامده است.

positive lookahead : بعد از بخش موردنظر در عبارت باقاعده، یک رشته‌ی مشخص آمده است

positive lookbehind :  قبل از بخش موردنظر در عبارت باقاعده، یک رشته‌ی مشخص آمده است

(?<= |^)ahmad(?= |$)

negative lookahead :  بعد از بخش موردنظر در عبارت باقاعده، یک رشته‌ی مشخص نیامده است.

negative lookbehind : قبل از بخش موردنظر در عبارت باقاعده، یک رشته‌ی مشخص نیامده است

(?<!a)ahmad(?!b)

توابع

preg_match : در رشته به دنبال یک زیررشته متناسب با عبارت منظم می‌گردد.
preg_match_all : تمام زیررشته متناسب با عبارت منظم می‌گردد.
preg_replace : در رشته به دنبال یک زیررشته متناسب با عبارت منظم می‌گردد و آن را با رشته دیگر جایگزین میکند.
preg_split : در رشته به دنبال یک زیررشته متناسب با عبارت منظم می‌گردد و آن را تقسیم میکند.

برای تست کردن الگوهای خود هم میتوانید از سایت https://regex101.com استفاده کنید.

درباره من
  • سلام به وب سایت من خوش اومدید ! از سال 1388 که وارد دنیای برنامه نویسی شدم تجربیات خودم رو از پروژه های مختلف به دست آوردم و همیشه سعی کردم تا مهارت های فنی و رفتاری خودم رو ارتقا بدم تا بتونم برای خودم و سازمانی که در آن کار می کنم بهترین باشم . من عاشق یادگیری هستم و همیشه از چالش های جدید هیجان زده میشم چون اونارو کلید موفقیت و رشد خودم می دونم.
  • @ahmadnaderi01
arrow