هناك طريقتان لتحديد التعبيرات العادية في JavaScript.
1.RegexP منشئ
var pattern = new regexp ("[bc] at" ، "i") ؛
يتلقى معلمتين: أحدهما هو نمط السلسلة المطلوب مطابقة ، والآخر هو سلسلة العلم الاختيارية.
2. الحرفي
var pattern = /[bc] at /i ؛
يدعم نمط المطابقة للتعبيرات العادية ثلاث سلاسل العلم:
G: وضع البحث العالمي ، الذي سيتم تطبيقه على جميع الأوتار ، بدلاً من إيقاف البحث عند البحث في المباراة الأولى ؛
I: Engore Case ، تجاهل حالة الرسالة ، أي ، تجاهل النمط وحالة السلسلة عند تحديد المطابقة ؛
M: خطوط متعددة ، نمط متعدد الأسلحة ، أي عندما يصل البحث إلى نهاية خط النص ، فسوف يستمر في البحث عما إذا كانت هناك تطابق على السطر التالي.
الفرق بين هاتين الطريقتين لإنشاء تعبيرات منتظمة هو أن التعبير الحرفي العادي يشارك دائمًا نفس مثيل RegexP ، وأن كل مثيل RegexP جديد تم إنشاؤه باستخدام المُنشئ هو مثيل جديد.
metacharacter
metacharacters هي شخصيات ذات معاني خاصة. المتراكشون الرئيسية للتعبيرات العادية هي:
([{ / ^ $ |)؟ * +.
الميتراتار لها معاني مختلفة في مجموعات مختلفة.
شخصيات خاصة محددة مسبقا
فئة فئة الأحرف البسيطة
بشكل عام ، يحتوي التعبير العادي على حرف يتوافق مع حرف في سلسلة ، ولكن يمكننا استخدام [] لإنشاء فئة بسيطة لتمثيل فئة من الأحرف التي تتطابق مع ميزة معينة. على سبيل المثال:
يمكن [ABC] مطابقة الشخصيات بين قوسين A أو B أو C أو أي مزيج منها.
عكس الفصل
نظرًا لأن [] يمكنها إنشاء فئة ، فسوف تفكر بشكل طبيعي في الفئة المقابلة التي لا تحتوي على المحتوى بين قوسين. يسمى هذا الفئة فئة عكسية. على سبيل المثال ، يمكن [^ABC] مطابقة الأحرف التي ليست A أو B أو C.
فئة النطاق
في بعض الأحيان يكون من المقلق للغاية مطابقة الشخصيات واحدة تلو الأخرى ونوع المباراة هو نفسه. في هذا الوقت ، يمكننا استخدام خط الاتصال "-" لتمثيل المحتوى بين فاصل مغلق معين. على سبيل المثال ، يمكن لمطابقة جميع الأحرف الصغيرة استخدام [AZ] ، على النحو التالي:
يمكن التعبير عن مطابقة كل 0 إلى 9 باستخدام [0-9]:
فصول محددة مسبقا
بالنسبة للعديد من الفصول التي أنشأتها أعلاه ، توفر لنا التعبيرات العادية العديد من الفئات المحددة مسبقًا بشكل شائع لمطابقة الشخصيات الشائعة ، على النحو التالي:
| شخصية | فئة مكافئة | معنى |
| . | [^/n/r] | تطابق جميع الأحرف باستثناء عودة النقل وكسر الخط |
| /د | [0-9] | أحرف الأرقام |
| /د | [^0-9] | شخصيات غير رقمية |
| /ق | [/t/n/x0b/f/r] | أحرف المسافة البيضاء |
| /ق | [^/t/n/x0b/f/r] | شخصيات غير وايتيس |
| /ث | [A-ZA-Z_0-9] | أحرف الكلمات (الحروف والأرقام والدرجات السفلية) |
| /ث | [^A-ZA-Z_0-9] | شخصيات غير كلمة |
الكمية
الطريقة أعلاه تتطابق مع الأحرف هي واحدة لواحد. إذا ظهرت شخصية عدة مرات على التوالي ، فسيكون ذلك مزعجًا للغاية للمطابقة وفقًا للطريقة أعلاه. لذلك ، نتساءل عما إذا كانت هناك طرق أخرى يمكن أن تتطابق مباشرة مع الشخصيات التي تظهر بشكل متكرر. توفر لنا التعبيرات العادية بعض الكميات ، على النحو التالي:
| شخصية | معنى |
| ؟ | صفر أو مرة واحدة (حتى مرة واحدة) |
| + | تظهر مرة واحدة أو أكثر (مرة واحدة على الأقل) |
| * | صفر أو حوادث متعددة (في أي وقت) |
| {n} | تظهر ن مرات |
| {n ، m} | تظهر n إلى M Times |
| {n ،} | تظهر على الأقل ن مرات |
أوضاع الجشع وغير الخضراء
لأسلوب المطابقة لـ {n ، m} ، هل يجب مطابقة n أو m؟ وهذا ينطوي على مسألة مطابقة الأنماط. بشكل افتراضي ، تعد الكميات أكبر من الأحرف المطابقة قدر الإمكان ، والتي تسمى الوضع الجشع ، على سبيل المثال:
var num = '123456789' ؛ num.Match (// d {2،4}/g) ؛ // [1234] ، [5678] ، [9]لوضع الصحيح وغير الخبيث ، تحتاج فقط إلى إضافة "؟"؟ بعد الكمية. على سبيل المثال ، {n ، m}؟ ، إنه يتطابق مع أقل الأحرف ، على النحو التالي:
var num = '123456789' ؛ num.Match (// d {2،4}؟/g) ؛ // [12] ، [34] ، [56] ، [78] ، [9]التجميع
لا يمكن مطابقة الكميات إلا عدة مرات لشخصية واحدة. ماذا لو كنا نرغب في مطابقة مجموعة معينة من الشخصيات عدة مرات؟ في التعبيرات العادية ، يمكن للأقواس تحديد سلسلة ككل كمجموعة.
إذا أردنا مطابقة كلمة تظهر Apple 4 مرات ، فيمكننا مطابقة (Apple) {4} مثل هذا ، على النحو التالي:
إذا كنت ترغب في مطابقة Apple أو Orange تظهر 4 مرات ، فيمكنك إدخال حرف الأنابيب "|" ، على سبيل المثال:
(Apple | Orange) {4}
إذا ظهرت أقواس متعددة في تعبير منتظم باستخدام التجميع ، أي مجموعات متعددة ، فإن النتيجة المطابقة ستجمع أيضًا وترقيم المباريات ، على سبيل المثال:
(Apple)/D+(Orange)
إذا لم نرغب في التقاط حزم معينة ، فنحن بحاجة فقط إلى اتباع علامة استفهام وقولون قبل أقواس الحزمة مباشرة ، على سبيل المثال:
(؟: Apple)/D+(Orange)
الحدود
توفر لنا التعبيرات العادية أيضًا العديد من الأحرف المطابقة للحدود الشائعة الاستخدام ، مثل:
| شخصية | معنى |
| ^ | ابدأ بـ XX |
| $ | تنتهي مع xx |
| /ب | حدود الكلمة ، في إشارة إلى أحرف أخرى غير [A-ZA-Z_0-9] |
| /ب | الحدود غير الكلمة |
تتطابق كلمة الحدود مع الموضع ، وجانب واحد من هذا الموضع هو الأحرف التي تشكل الكلمة ، ولكن الجانب الآخر هو الموضع البداية أو النهاية لحرف أو سلسلة غير كلمة.
معاينة
يستخدم Lookahead لمطابقة الحدوث التالي لمجموعة حرف محددة أم لا.
| تعبير | معنى |
| exp1 (؟ = exp2) | يتبع المباراة Exp2 من Exp2 |
| exp1 (؟! exp2) | تطابق EXP1 الذي لا يوضح بعد ذلك |
انظر مثال:
التفاح (؟ = برتقالي)
(/apple(=orange)/).test('Appleorange123 ') ؛ // true (/apple(=orange)/).test(''ApplePear345 ') ؛ //خطأ شنيعلنلقي نظرة على مثال آخر:
التفاح (؟! برتقالي)
(/apple( !orange)/).test('Appleorange123 ') ؛ // false (/apple(؟ !orange)/).test(''ApplePear345 ') ؛ //حقيقيالمقالة أعلاه هي كليشيهات حول بناء جملة التعبير العادي JavaScript. هذا هو كل المحتوى الذي أشاركه معك. آمل أن تتمكن من إعطائك مرجعًا وآمل أن تتمكن من دعم wulin.com أكثر.