javascriptRegular expressionعبارت منظم در جاوااسکریپت
RegExp در جاوااسکریپت الگوی متن را بررسی میکند؛ با test، آغاز و پایان رشته و تعداد تکرار، کد دانشجویی ساده را بسنجید و محدودیتش را بشناسید.
مفهوم به زبان ساده
عبارت منظم الگویی برای جستوجو یا بررسی شکل متن است. در جاوااسکریپت میتوان آن را با دو اسلش نوشت و با test پرسید آیا تطبیقی وجود دارد یا نه. این ابزار برای شکلی مانند «حرف S و چهار رقم لاتین» مناسب است؛ ولی معنای تجاری داده، وجود واقعی دانشجو یا مجوز دسترسی را بهتنهایی تعیین نمیکند.
در الگوی نمونه، ^ آغاز ورودی و $ پایان آن را مشخص میکنند؛ به این ترتیب پذیرفتن بخشی از یک متن بلندتر کافی نیست. [0-9] یک رقم لاتین و {4} چهار تکرار آن را میخواهد. پرچم i مقایسهٔ حرف لاتین را نسبت به بزرگی و کوچکی حساس نمیکند. ارقام فارسی طبق این قرارداد پذیرفته نمیشوند؛ اگر لازماند، باید الگو یا مرحلهٔ عادیسازی را آگاهانه تغییر دهید.
مرز مثال کوچک است تا بتوان هر بخش را توضیح داد. پیش از افزودن الگوهای پیچیده، نمونههای مجاز، نامجاز و مرزی را بنویسید. از گرفتن عبارت منظم دلخواه و بسیار پرهزینه از کاربر خودداری کنید. همچنین test روی الگوی دارای g یا y میتواند وضعیت lastIndex را تغییر دهد؛ برای اعتبارسنجی سادهٔ مستقل، این پرچمها معمولاً لازم نیستند.
کجا به کار میآید؟
- بررسی شکل محدود و مستند یک شناسه یا کد
- پیداکردن الگوی متنی با نتیجهٔ بله یا خیر
از تعریف تا یک مثال واقعی
const studentCode = /^S[0-9]{4}$/i;
console.log(studentCode.test('S2048'));
console.log(studentCode.test('s1000'));
console.log(studentCode.test('S20480'));
console.log(studentCode.test('متن S2048'));
console.log(studentCode.test('S۲۰۴۸'));
true true false false false
این مثال چطور کار میکند؟
الگو یک S و دقیقاً چهار رقم لاتین میخواهد.
پرچم i حرف کوچک s را هم میپذیرد.
رقم اضافه، متن پیش از کد و ارقام فارسی با قرارداد فعلی رد میشوند.
اشتباه رایج
صرف وجود تطبیق، معتبر بودن معنای داده را ثابت نمیکند. حذف ^ و $ نیز میتواند پذیرش بخشی از متن را بهجای بررسی کل ورودی ممکن کند.
این را به خاطر بسپارید
ابتدا قرارداد متن را بنویسید، سپس الگوی کوچک و قابل توضیح بسازید و مرزها را آزمایش کنید.