عبارت با قاعده (قسمت اول) - نسخهی قابل چاپ +- انجمن عمومی گسترش فناوری آگو (http://forums.ago.ir) +-- انجمن: انجمن های عمومی گسترش فناوری آگو (/forumdisplay.php?fid=1) +--- انجمن: برنامه نویسی (/forumdisplay.php?fid=13) +--- موضوع: عبارت با قاعده (قسمت اول) (/showthread.php?tid=2307) |
عبارت با قاعده (قسمت اول) - agotd - 01-29-2014 07:17 PM در علم رایانه، عبارت باقاعده (regular expressions)، که تحت عنوان regex یا regexp نیز نام میبرند به معنی تطبیق رشته در متن است، که از قبیل نویسههای خاص و یا الگوهایی از نویسهها میباشد. برای مثال: دنبالهای از نویسههای «car» در هر متن، از قبیل «car»، «cartoon» یا «bicarbonate» یک نویسهٔ «$» که پس از آن یک یا چند رقم بیاید و پس از آن به صورت اختیاری یک ممیز بیاید و پس از ممیز دقیقاً دو رقم اضافه قرار داشته باشد (مانند «$۱۰» یا «$۲۴۵٫۹۹») … تو PHP دو نوع متفاوت از عبارت باقاعده وجود داره: POSIX Extended Perl Compatible که بیشتر ار دومی استفاده میشه (به دلیل سرعت و تکامل بیشتر از POSIX) و من هم قصد دارم همینو آموزش بدم. یکی از موارد استفاده از عبارت باقاعده اعتبارسنجی اطلاعاتی است که معمولاً از طریق فرم ها دریافت میشن. مثلاً برای اعتبارسنجی یه نام کاربری که باید شامل اعداد و حروف بین ۶ تا ۱۰ کاراکتر باشه میشه از این الگو استفاده کرد: کد php: /^[a-z0-9]{6,10}$/ البته به این صورت: کد php: <?php و توضیح الگویی که استفاده شد: هر الگویی که نوشته میشه باید بین دو علامت “/” قرار بگیره. کاراکتر “^”: این کاراکتر به معنی آغار خط هست. برای مثال اگه بخوایم ببینیم یه نویسه با a شروع میشه یا نه اونوقت به این الگو نیاز داریم کد php: /^a/ کاراکتر “$”: این کاراکتر به معنی پایان خط هست. دقیقاً عکس “^” عمل میکنه. کاراکتر “|”: این کاراکتر به معنی “یا” هست. مثلا برای بررسی مطابقت یا عدم مطابقت یه نویسه با یکی از کلمات red یا bed این الگو رو میخوایم: کد php: /^bed|red$/ پرانتز “()”: برای ایجاد زیر الگوها در یک الگو ازش استفاده میکنیم. مثلا اگه بخوایم نویسه ای با یکی از کلمات bed یا red مطابقت کنه به الگوی زیر نیاز داریم: کد php: /^(r|b)ed$/ براکت “[]“: اینا وقتی کاربرد داره که بخوایم یه گروه خاص از کاراکترها رو با یه نویسه مقایسه کنیم. مثلا واسه اینکه ببینیم یه نویسه از a و b و h تشکیل شده یا نه این الگو رو مینویسیم: کد php: /^[abh]+$/ کاراکتر “+” و “*”: “+” یکی یا بیشتر و “*” هیچی یا بیشتر. مثلا برای بررسی اینکه یه نویسه از نوع عددیه یا نه این الگو لازمه: کد php: /^[۰-۹]+$/ ”{n,m}”: یعنی هر الگویی که قبلش قرار داره باید بین n تا m بار تکرار شده باشه. و تابع preg_match که به ترتیب الگو و نویسه رو دریافت میکنه و اگر نویسه با الگو مطابقت کنه true رو برمی گردونه. |