الگوها و پرچم ها

ساخت وبلاگ

عبارات منظم الگویی هستند که روشی قدرتمند برای جستجو و جایگزینی در متن ارائه می دهند.

در JavaScript ، آنها از طریق شیء Regexp و همچنین در روش های رشته ها در دسترس هستند.

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

یک عبارت منظم (همچنین "Regexp" یا فقط "Reg") از یک الگوی و پرچم های اختیاری تشکیل شده است.

دو نحو وجود دارد که می توانند برای ایجاد یک شیء بیان منظم استفاده شوند.

نحو "طولانی":

regexp = regexp جدید ("الگوی" ، "پرچم") ؛

و "کوتاه" ، با استفاده از Slashes "/":

regexp = /الگوی /؛// بدون پرچم regexp =/الگوی/gmi ؛// با پرچم های G ، M و I (به زودی تحت پوشش قرار می گیرد)

برش /./ به JavaScript بگویید که ما در حال ایجاد یک عبارت منظم هستیم. آنها همان نقش نقل قول ها را برای رشته ها بازی می کنند.

در هر دو مورد REGEXP به نمونه ای از کلاس REGEXP داخلی تبدیل می شود.

تفاوت اصلی بین این دو نحو این است که الگوی با استفاده از برش /./ اجازه نمی دهد که عبارات وارد شوند (مانند الگوی رشته ای با $ $<.>). آنها کاملاً ایستا هستند.

از برش ها استفاده می شود که ما بیان منظم را در زمان نوشتن کد بدانیم - و این رایج ترین وضعیت است. در حالی که New REGEXP بیشتر در هنگام نیاز به ایجاد یک regexp "در پرواز" از یک رشته تولید شده پویا استفاده می شود. برای مثال:

let tag = prompt("What tag do you want to find?", "h2"); let regexp = new RegExp(`>`) ؛// همان به عنوان // در صورت پاسخ به "H2" در سریع بالا

پرچم

عبارات منظم ممکن است دارای پرچم هایی باشد که بر جستجو تأثیر می گذارد.

فقط 6 مورد از آنها در جاوا اسکریپت وجود دارد:

من با این پرچم جستجو حساس است: هیچ تفاوتی بین A و A وجود ندارد (مثال زیر را ببینید). G با این پرچم جستجو به دنبال همه مسابقات است ، بدون آن - فقط اولین مسابقه بازگردانده می شود. M Multiline Mode (در فصل چند لایه لنگرگاه ^ $ ، پرچم "M") پوشش داده شده است. S حالت "dotall" را قادر می سازد ، که اجازه می دهد یک نقطه باشد. برای مطابقت با شخصیت Newline n (تحت پوشش فصل с сивооعد к* клли). U پشتیبانی کامل یونیکد را امکان پذیر می کند. پرچم پردازش صحیح جفت های جانشین را امکان پذیر می کند. اطلاعات بیشتر در مورد آن در فصل юнік:: прапорецц "u" та клл p. y حالت "چسبنده": جستجوی موقعیت دقیق در متن (تحت پوشش فصل липкий прапорецц "y" ، пош к зададане позицеї)

رنگ

از اینجا به بعد طرح رنگ:

  • regexp - قرمز
  • رشته (جایی که ما جستجو می کنیم) - آبی
  • نتیجه - سبز

جستجو: str. match

همانطور که قبلاً نیز ذکر شد ، عبارات منظم با روش های رشته ادغام می شوند.

روش Str. Match (Regexp) تمام مسابقات Regexp را در رشته رشته می یابد.

این 3 حالت کار دارد:

 

  1. اگر بیان منظم دارای پرچم G باشد ، مجموعه ای از همه مسابقات را برمی گرداند:

     

اجازه دهید str = "ما می خواهیم ، شما را سنگ می زنیم" ؛هشدار (str. match (/we/gi)) ؛// ما ، ما (مجموعه ای از 2 بستر که مطابقت دارند)
اجازه دهید str = "ما می خواهیم ، شما را سنگ می زنیم" ؛اجازه دهید نتیجه = str. match (/we/i) ؛// بدون پرچم G هشدار (نتیجه [0]) ؛// WE (مسابقه 1) هشدار (نتیجه. طول) ؛// 1 // جزئیات: هشدار (نتیجه. index) ؛// 0 (موقعیت مسابقه) هشدار (نتیجه. input) ؛// ما خواهیم کرد ، ما شما را سنگ می زنیم (رشته منبع)
اجازه دهید Matches = "JavaScript" . match (/html/) ؛// = null if (! matches. l طول)

اگر دوست داریم نتیجه همیشه یک آرایه باشد ، می توانیم از این طریق آن را بنویسیم:

اجازه دهید Matches = "JavaScript" . match (/html/) ||[] ؛if (! matches. l طول)

تعویض: str. replace

روش STR. replace (Regexp ، جایگزینی) جایگزین مسابقات یافت شده با استفاده از REGEXP در رشته رشته با جایگزینی است (همه مسابقات اگر پرچم G وجود داشته باشد ، در غیر این صورت ، فقط اولین مورد).

// بدون پرچم G هشدار ("ما خواهیم کرد ، خواهیم کرد". Replace (/We/I ، "I")) ؛// من می خواهم ، ما با پرچم G هشدار می خواهیم ("ما می خواهیم ، می خواهیم" . Replace (/We/ig ، "I")) ؛// خواهم کرد ، خواهم کرد

آرگومان دوم رشته جایگزینی است. ما می توانیم از ترکیبات خاص شخصیت در آن استفاده کنیم تا قطعات مسابقه را وارد کنیم:

 

نماد اقدام در رشته جایگزینی
$& کل مسابقه را درج می کند
$` بخشی از رشته را قبل از مسابقه وارد می کند
$' بخشی از رشته را بعد از مسابقه وارد می کند
$n اگر n یک شماره 1-2 رقمی است ، پس از آن محتویات پرانتز N-هفتم را درج می کند ، بیشتر در مورد آن در گروه های ضبط شده در این فصل
$ محتوای پرانتز را با نام مشخص درج می کند ، بیشتر در مورد آن در گروه های ضبط شده
$$ شخصیت $ را درج می کند

مثالی با $ &:

هشدار ("من HTML را دوست دارم" . Replace (/html/، "$ & and JavaScript")) ؛// من HTML و JavaScript را دوست دارم

آزمایش: regexp. test

روش regexp. test (str) حداقل یک مسابقه را در صورت یافتن ، به دنبال واقعی است ، در غیر این صورت نادرست است.

بگذارید STR = "من JavaScript را دوست دارم" ؛اجازه دهید regexp = /love /i ؛هشدار (regexp. test (str)) ؛// درست است، واقعی

بعداً در این فصل ، ما عبارات منظم تری را مطالعه خواهیم کرد ، نمونه های بیشتری را طی خواهیم کرد و همچنین روش های دیگری را نیز برآورده می کنیم.

اطلاعات کامل در مورد روش ها در روش های مقاله Regexp و String آورده شده است.

خلاصه

  • یک بیان منظم از یک الگوی و پرچم های اختیاری تشکیل شده است: G ، I ، M ، U ، S ، Y.
  • بدون پرچم و نمادهای خاص (که بعداً مطالعه خواهیم کرد) ، جستجو توسط یک REGEXP همان جستجوی بستر است.
  • روش Str. match (Regexp) به دنبال مسابقات است: همه آنها اگر پرچم G وجود داشته باشد ، در غیر این صورت ، فقط مورد اول.
  • روش Str. Replace (regexp ، جایگزینی) جایگزین مسابقات یافت شده با استفاده از Regexp با leplacent است: همه آنها اگر پرچم G وجود داشته باشد ، در غیر این صورت فقط مورد اول است.
  • روش regexp. test (str) اگر حداقل یک مسابقه باشد ، درست باز می گردد ، در غیر این صورت ، کاذب را برمی گرداند.

به اشتراک گذاشتن

نظرات

این را قبل از اظهار نظر بخوانید ...

  • اگر پیشنهادی برای بهبود کتاب درسی دارید ، لطفاً در مورد GitHub بحث کنید یا بلافاصله درخواست ادغام با تغییرات را ایجاد کنید.
  • اگر نمی توانید چیزی را در مقاله درک کنید ، سعی کنید آن را بهبود بخشید.
  • برای وارد کردن کد ، از یک برچسب استفاده کنید ، برای چندین ردیف - برای بیش از 10 ردیف برچسب آنها را بپیچید - از Sandbox (PLNKR ، JSBIN ، CODEPEN ...) استفاده کنید. در غیر این صورت فقط مورد اول.
نرم افزار مفید تریدر...
ما را در سایت نرم افزار مفید تریدر دنبال می کنید

برچسب : نویسنده : احمد شاملو بازدید : 33 تاريخ : يکشنبه 1 مرداد 1402 ساعت: 0:42