جدول مرجع سریع نحو عبارات باقاعده

عبارات منظم که به آن‌ها "الگوهای منظم" نیز گفته می‌شود، یک الگوی متنی هستند که معمولاً برای جستجو، جایگزینی و کنترل متن استفاده می‌شوند. این عبارات شامل حروف از a تا z و برخی از کاراکترهای خاص هستند. دامنه کاربرد عبارات منظم بسیار وسیع است و در ابتدا توسط Unix معرفی شد و سپس در زبان‌های برنامه‌نویسی مختلف مانند Scala، PHP، C#، Java، C++، Objective-C، Perl، Swift، VBScript، Javascript، Ruby و Python به کار گرفته شد. یادگیری عبارات منظم واقعاً به معنای یادگیری یک نوع تفکر منطقی بسیار انعطاف‌پذیر است که با استفاده از روش‌های سریع و ساده به کنترل روی رشته‌ها می‌رسد.
نماد عبارات منظم توضیح
\ علامت گذاری کاراکتر بعدی به عنوان یک کاراکتر خاص، یک کاراکتر عادی، یا ارجاع عقب، یا یک کاراکتر فرار هشتاد. به عنوان نمونه، “n" با کاراکتر"n" مطابقت دارد. "\n" با یک خط جدید مطابقت دارد. "\\" مطابقت دارد با "\" و "\(" مطابقت دارد با "(".
^ موقعیت شروع رشته ورودی را مطابقت می‌دهد. اگر ویژگی Multiline از شیء RegExp تنظیم شود، ^ همچنین با جزء "\n" یا "\r" مطابقت دارد.
$ موقعیت پایان رشته ورودی را مطابقت می‌دهد. اگر ویژگی Multiline از شیء RegExp تنظیم شود، $ همچنین با جزء "\n" یا "\r" مطابقت دارد.
* مقدار قبلی را ۰ یا چند بار مطابقت می‌دهد. به عنوان مثال، "zo*" می‌تواند با "z" و "zoo" مطابقت داشته باشد. * برابر {0,} است.
+ مقدار قبلی را یکبار یا چند بار مطابقت می‌دهد. به عنوان نمونه، "zo+" می‌تواند با "zo" و "zoo" مطابقت داشته باشد، اما نمی‌تواند با "z" مطابقت داشته باشد. + برابر {1,} است.
? مقدار قبلی را ۰ یا یک بار مطابقت می‌دهد. به عنوان مثالی، "do(es)?" می‌تواند با "does" و یا با "do" در "does" مطابقت داشته باشد. ? برابر {0,1} است.
{n} n یک عدد صحیح غیر منفی است. تعداد معین n بار مطابقت می‌دهد. برای مثال، "o{2}" نمی‌تواند با "Bob" در "o" مطابقت داشته باشد، اما می‌تواند با "food" در "oo" مطابقت داشته باشد.
{n,} n یک عدد صحیح غیر منفی است. حداقل n بار مطابقت می‌دهد. به عنوان مثال، "o{2,}" نمی‌تواند با "Bob" در "o" مطابقت داشته باشد، اما می‌تواند با "foooood" در جایی که تمام o ها وجود دارند مطابقت داشته باشد. "o{1,}" معادل "o+" است. "o{0,}" معادل "o*" است.
{n,m} m و n هر دو عدد صحیح غیر منفی هستند؛ n باید کوچکتر یا برابر با m باشد. حداقل n بار و حداکثر m بار مطابقت می‌دهد. به عنوان مثال، "o{1,3}" سه o اولین کاراکتر "fooooood" را مطابقت می‌دهد. "o{0,1}" معادل "o?" است. توجه داشته باشید که در بین کاما و دو عدد نباید فضای خالی وجود داشته باشد.
? اگر این نماد بلافاصله بعد از هر محدود کننده دیگری (*, +, ?, {n}, {n,}, {n,m} ) قرار گیرد، الگوی مطابقت غیر حریصانه خواهد بود. الگوی غیر حریصانه کمترین مقدار ممکن را برای رشته جستجو شده رات مطابقت می‌دهد، در حالی که الگوی حریصانه به دنبال تطابق حداکثری کاراکترها است. برای مثال، برای رشته "oooo"، "o+?" تنها شامل یک "o" می‌شود، در حالی که "o+" همه "o" ها را شامل خواهد شد.
. هر کاراکتر واحد به جز "\n" را مطابقت می‌دهد. برای تطابق هر کاراکتر از جمله "\n"، از الگویی مانند "(.|\n)" استفاده کنید.
(pattern) الگوی pattern را مطابقت می‌دهد و این مطابقت را به دست می‌آورد. مطابقت‌های به دست آمده را می‌توان از مجموعه Matches تولید شده به دست آورد؛ در VBScript از مجموعه SubMatches و در JScript از ویژگی‌های $0…$9 استفاده کنید. برای مطابقت بین پرانتز، از "\(" یا "\)" استفاده کنید.
(?:pattern) الگوی pattern را مطابقت می‌دهد اما نتیجه تطابق را به دست نمی‌آورد، یعنی این یک تطابق غیر به دست آمده است که ذخیره نمی‌شود تا بعداً مورد استفاده قرار گیرد. این امر در هنگامی که از کاراکترهای "یا" "(|)" برای ترکیب اجزای یک الگو استفاده می‌شود، بسیار مفید است. به عنوان مثال، "industr(?:y|ies)" از "industry|industries" به طور مختصرتری بیان می‌شود.
(?=pattern) جستجوی مثبت پیش‌نیاز، در هر نقطه‌ای که با pattern مطابقت دارد، یک رشته جستجو را مطابقت می‌دهد. این یک تطابق غیر به دست آمده است، به این معنی که این تطابق نیاز به به دست گیری و ذخیره‌ی آن برای استفاده‌ی بعدی ندارد. به عنوان مثال، "Windows(?=95|98|NT|2000)" می‌تواند با "Windows" در "Windows2000" مطابقت داشته باشد، اما نمی‌تواند با "Windows" در "Windows3.1" مطابقت داشته باشد. پیش‌نیاز کاراکترها را مصرف نمی‌کند، یعنی پس از یک تطابق، جستجوی بعدی بلافاصله پس از آخرین تطابق شروع می‌شود، نه از کاراکتری که شامل پیش‌نیاز است.
(?!pattern) عدم تأیید مثبت پیش‌نیاز، جستجوی عبارت را در هر نقطه‌ای که با pattern مطابقت ندارد، مطابقت می‌دهد. این نیز یک تطابق غیر به دست آمده است. به عنوان مثال، "Windows(?!95|98|NT|2000)" می‌تواند با "Windows" در "Windows3.1" مطابقت داشته باشد، اما نمی‌تواند با "Windows" در "Windows2000" مطابقت داشته باشد. پیش‌نیاز کاراکترها را مصرف نمی‌کند، یعنی پس از یک تطابق، جستجوی بعدی بلافاصله پس از آخرین تطابق آغاز می‌شود، نه از کاراکتری که شامل پیش‌نیاز است.
(?<=pattern) پیش‌نیاز تأیید معکوس، مشابه بدون تأیید مثبت، فقط جهت مخالف است. به عنوان مثال، "(?<=95|98|NT|2000)Windows" می‌تواند با "2000Windows" مطابقت داشته باشد، اما نمی‌تواند با "3.1Windows" مطابقت داشته باشد.
(?<!pattern) پیش‌نیاز عدم تأیید معکوس، مشابه عدم تأیید مثبت، فقط جهت معکوس است. به عنوان مثال، "(?<!95|98|NT|2000)Windows" می‌تواند با "3.1Windows" مطابقت داشته باشد، اما نمی‌تواند با "2000Windows" مطابقت داشته باشد.
x|y مقدار x یا y را مطابقت می‌دهد. به عنوان مثال، "z|food" می‌تواند با "z" یا "food" مطابقت داشته باشد. "(z|f)ood" مطابقت با "zood" یا "food" دارد.
[xyz] مجموعه‌ای از کاراکترها. با هر کاراکتر موجود در آن مطابقت می‌دهد. به عنوان مثال، "[abc]" می‌تواند با "a" در "plain" مطابقت داشته باشد.
[^xyz] مجموعه‌ی کاراکتر منفی. با هر کاراکتری که در آن شامل نمی‌شود مطابقت می‌دهد. به عنوان مثال، "[^abc]" می‌تواند با "p" در "plain" مطابقت داشته باشد.
[a-z] محدوده کاراکترها. با هر کاراکتری در محدوده مشخص شده مطابقت می‌دهد. به عنوان مثال، "[a-z]" می‌تواند با هر حرف کوچک بین "a" و "z" مطابقت داشته باشد.
[^a-z] مجموعه کاراکتر منفی در محدوده. با هر کاراکتری که در محدوده مشخص نشده مطابقت می‌دهد. به عنوان مثال، "[^a-z]" می‌تواند با هر کاراکتری که در بازه "a" تا "z" نیست، مطابقت داشته باشد.
\b مرز یک کلمه را مطابقت می‌دهد، به این معنی که موقعیت‌های بین یک کلمه و فاصله را نشان می‌دهد. به عنوان مثال، "er\b" می‌تواند با "never" مطابقت داشته باشد، اما نمی‌تواند با "verb" مطابقت داشته باشد.
\B مرز غیر کلمه را مطابقت می‌دهد. "er\B" می‌تواند با "verb" مطابقت داشته باشد، اما نمی‌تواند با "never" مطابقت داشته باشد.
\cx با کاراکتر کنترل مشخص شده با x مطابقت می‌دهد. به عنوان مثال، \cM با کنترل M یا return مطابقت دارد. x باید یکی از مقادیر A-Z یا a-z باشد. در غیر این صورت، c به عنوان یک کاراکتر عادی "c" تلقی می‌شود.
\d با یک کاراکتر عددی مطابقت می‌دهد. معادل [0-9] است.
\D با یک کاراکتر غیر عددی مطابقت دارد. معادل [^0-9] است.
\f با یک صفحه جدید مطابقت می‌دهد. معادل \x0c و \cL است.
\n با یک خط جدید مطابقت دارد. معادل \x0a و \cJ است.
\r با یک return مطابقت دارد. معادل \x0d و \cM است.
\s با هر کاراکتر فضای خالی، شامل فضای خالی، TAB، و صفحه جدید مطابقت دارد. معادل [ \f\n\r\t\v] است.
\S با هر کاراکتر غیر فضای خالی مطابقت دارد. معادل [^ \f\n\r\t\v] است.
\t با یک TAB مطابقت دارد. معادل \x09 و \cI است.
\v با یک TAB عمودی مطابقت دارد. معادل \x0b و \cK است.
\w با هر کاراکتر کلمه‌ای که شامل underscore باشد، مطابقت دارد. معادل "[A-Za-z0-9_]" است.
\W با هر کاراکتر غیر کلمه‌ای مطابقت دارد. معادل "[^A-Za-z0-9_]" است.
\xn با n، که n یک مقدار تبدیل هگزادسیمال است، مطابقت دارد. مقدار تبدیل هگزادسیمال باید دو رقم معین باشد. به عنوان مثال، "\x41" با "A" مطابقت دارد. "\x041" نیز معادل "\x04&1" است. عبارات منظم می‌توانند از کدهای ASCII استفاده کنند.
\num با num، که num یک عدد صحیح مثبت است، مطابقت دارد. به ارجاع به مطابقت بدست آمده اشاره دارد. مانند "(.)\1" که با دو کاراکتر مشابه متوالی مطابقت دارد.
\n یک مقدار تبدیل هشتاد یا یک ارجاع عقب را شناسایی می‌کند. اگر \n حداقل n زیر عبارات بدست آمده باشد، n یک ارجاع است. در غیر اینصورت، اگر n یک عدد هشتاد (0-7) باشد، n یک مقدار فرار هشتاد است.
\nm یک مقدار تبدیل هشتاد یا یک ارجاع عقب را شناسایی می‌کند. اگر \nm حداقل nm زیر عبارات بدست آمده باشد، nm یک ارجاع است. اگر \nm حداقل n زیر عبارات بدست آمده باشد، آن گاه n یک ارجاع به یک کاراکتر حروفی m است. اگر هیچ‌یک از شرایط فوق برآورده نشود، اگر n و m هر دو اعداد هشتاد (0-7) باشند، آنگاه \nm با مقدار فرار هشتاد nm مطابقت خواهد داشت.
\nml اگر n یک عدد هشتاد (0-3) باشد و m و l هر دو عدد هشتادی باشند (0-7)، آن گاه با مقدار اعداد هشتادی nml مطابقت خواهد داشت.
\un با n، که n یک کاراکتر یونیکد با چهار عدد هگزادسیمال است، مطابقت دارد. به عنوان مثال، \u00A9 نماد حق کپی را مطابقت می‌دهد.
عبارات منظم متداول
نام کاربری /^[a-z0-9_-]{3,16}$/
رمز عبور /^[a-z0-9_-]{6,18}$/
رمز عبور ۲ (?=^.{8,}$)(?=.*\d)(?=.*\W+)(?=.*[A-Z])(?=.*[a-z])(?!.*\n).*$ (شامل اعداد/حروف بزرگ/حروف کوچک/نشان‌های نگارشی، هر چهار مورد باید وجود داشته باشند، بیش از ۸ کاراکتر)
مقدار هکزادسیمال /^#?([a-f0-9]{6}|[a-f0-9]{3})$/
پست الکترونیکی /^([a-z0-9_\.-]+)@([\da-z\.-]+)\.([a-z\.]{2,6})$/
/^[a-z\d]+(\.[a-z\d]+)*@([\da-z](-[\da-z])?)+(\.{1,2}[a-z]+)+$/ یا \w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*
آدرس URL /^(https?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?$/ یا [a-zA-z]+://[^\s]*
آدرس IP /((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)/
/^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/ یا ((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)
برچسب HTML /^<([a-z]+)([^<]+)*(?:>(.*)<\/\1>|\s+\/>)$/ یا <(.*)(.*)>.*<\/\1>|<(.*) \/>
حذف کد\\نظرات (?<!http:|\S)//.*$
مطابقت با کاراکترهای دو بایتی (شامل کاراکترهای چینی) [^\x00-\xff]
کاراکترهای چینی [\u4e00-\u9fa5]
محدوده کاراکترهای چینی در کد یونیکد /^[\u2E80-\u9FFF]+$/
کاراکترهای چینی و نشانه‌های تمام‌زا (کاراکترها) [\u3000-\u301e\ufe10-\ufe19\ufe30-\ufe44\ufe50-\ufe6b\uff01-\uffee]
تاریخ (سال-ماه-روز) (\d{4}|\d{2})-((0?([1-9]))|(1[1|2]))-((0?[1-9])|([12]([1-9]))|(3[0|1]))
تاریخ (ماه/روز/سال) ((0?[1-9]{1})|(1[1|2]))/(0?[1-9]|([12][1-9])|(3[0|1]))/(\d{4}|\d{2})
زمان (ساعت:دقیقه، ۲۴ ساعته) ((1|0?)[0-9]|2[0-3]):([0-5][0-9])
شماره تلفن ثابت در سرزمین چین (\d{4}-|\d{3}-)?(\d{8}|\d{7})
شماره تلفن همراه در سرزمین چین 1\d{10}
کد پستی در سرزمین چین [1-9]\d{5}
شماره شناسایی در سرزمین چین (۱۵ یا ۱۸ رقم) \d{15}(\d\d[0-9xX])?
عدد غیر منفی (عدد مثبت یا صفر) \d+
عدد مثبت [0-9]*[1-9][0-9]*
عدد منفی -[0-9]*[1-9][0-9]*
عدد صحیح -?\d+
عدد اعشاری (-?\d+)(\.\d+)?
خط خالی \n\s*\r یا \n\n(editplus) یا ^[\s\S ]*\n
شماره QQ [1-9]\d{4,}
کلماتی که شامل abc نیستند \b((?!abc)\w)+\b
مطابقت با کاراکترهای خالی در ابتدا و انتهای متن ^\s*|\s*$
ویرایش معمول
در زیر تعدادی جایگزینی برای کاراکترهای خاص چینی آورده شده است (editplus)
^[0-9].*\n
^[^第].*\n
^[习题].*\n
^[\s\S ]*\n
^[0-9]*\.
^[\s\S ]*\n
<p[^<>*]>
href="javascript:if\(confirm\('(.*?)'\)\)window\.location='(.*?)'"
<span style=".[^"]*rgb\(255,255,255\)">.[^<>]*</span>
<DIV class=xs0>[\s\S]*?</DIV>

راهنمای سریع نُت‌های عبارات منظم - نکات و دستور زبان متداول

عبارات منظم یک ابزار قدرتمند برای پردازش متن هستند، این صفحه شامل راهنمای سریع نُت‌های عبارات منظم است که به شما درک سریع‌تری از دستور زبان پایه‌ای عبارات منظم، اصلاح‌کننده‌ها، عبارات فرعی، الگوی حریص و غیر حریص و غیره می‌دهد.

دستور زبان پایه‌ای عبارات منظم

عبارات منظم برای توصیف الگوهای رشته‌ها استفاده می‌شوند، دستور زبان پایه‌ای معمول شامل:

اصلاح‌کننده‌های متداول عبارات منظم

اصلاح‌کننده‌های عبارات منظم برای تغییر قوانین مطابقت عبارات منظم استفاده می‌شوند، اصلاح‌کننده‌های متداول شامل:

الگوی حریص و غیر حریص

در عبارات منظم، واحدهای شمارش به صورت حریصانه به طور پیش‌فرض هستند و در تلاشند تا بیشترین کاراکتر را تطابق دهند. الگوی غیر حریص با اضافه کردن ? در انتهای واحدهای شمارش استفاده می‌شود، به عنوان مثال:

عبارت فرعی و گروه‌بندی

عبارات فرعی در عبارات منظم با پرانتز ( ( ) ) تعریف می‌شوند و به طور معمول برای استخراج قسمت‌های مطابقت داده شده استفاده می‌شوند. گروه‌بندی از طریق نشانه "|" انجام می‌شود. به عنوان مثال:

پاسخ سریع عبارات منظم

در زیر پاسخ‌های سریع به عبارات منظم متداول آورده شده است:

عملکرد عبارت منظم
تطابق عدد \d
تطابق غیر عدد \D
تطابق حروف [a-zA-Z]
تطابق هر کاراکتر .
تطابق کاراکتر فضای خالی \s

کاربرد عبارات منظم

عبارات منظم به طور وسیعی در زمینه‌های زیر به کار می‌روند:

نکات یادگیری عبارات منظم

اکنون از راهنمای سریع نُت‌های عبارات منظم ما استفاده کنید و در نوشتن عبارات منظم خود را کارآمدتر کنید و توانایی پردازش متن خود را بهبود بخشید!

رد پای شما:
انتخاب زبان