تصف التعبيرات العادية نمطًا من مطابقة السلسلة ، والذي يمكن استخدامه للتحقق مما إذا كانت السلسلة تحتوي على فرعية معينة ، أو استبدال السلسلة الفرعية المطابقة ، أو إخراج سلسلة فرعية تلبي شرطًا معينًا من سلسلة معينة ، إلخ.
نظرًا لأن التعبيرات العادية لا تستخدم بشكل متكرر ، فمن السهل نسيانها بشكل متكرر. يسرد المحرر التالي الوظائف والوظائف الشائعة الاستخدام هنا بطريقة موجزة للعرض المستقبلي:
هناك 2 وظائف شائعة الاستخدام لكائن regexp
1. وظيفة الاختبار
الاستخدام: regexpobject.test (سلسلة)
إرجاع: صحيح إذا كانت سلسلة السلسلة تحتوي على نص مطابقة regexpobject ، بطريقة خاطئة.
الوصف: لا يوجد شيء خاص حول هذه الطريقة ، ولا يوجد معاملة خاصة للمعدل G
مثال:
var url = 'http://www.baidu.com؟a=1&b=2&c=3' ؛var reg = /a=1/؛console.log(reg.test(url)) ؛ // نتيجة الإخراج صحيحة
2. وظيفة exec
الاستخدام: regexpobject.exec (سلسلة)
العودة: إرجاع صفيف حيث يتم تخزين نتائج المطابقة. إذا لم يتم العثور على تطابق ، تكون قيمة الإرجاع فارغة.
يصف:
طريقة exec () قوية جدا. إنها طريقة عامة وأكثر تعقيدًا للاستخدام من طريقة Test () والطرق التي تدعم التعبيرات العادية.
إذا وجد Exec () نصًا مطابقًا ، فسيتم إرجاع مجموعة النتائج. خلاف ذلك ، عودة لاغية. العنصر 0th من هذه الصفيف هو نص يطابق التعبير العادي ، العنصر الأول هو النص الذي يطابق التعبير الفرعي الأول لـ regexpobject ، إن وجد ، العنصر الثاني هو النص الذي يطابق التعبير الثاني الثاني لـ regexpobject ، وما إلى ذلك. بالإضافة إلى عنصر الصفيف وسمة الطول ، تقوم طريقة exec () بإرجاع خصائصين. تعلن خاصية الفهرس عن موضع الشخصية الأولى التي تطابق النص. تقوم خاصية الإدخال بتخزين سلسلة السلسلة المستردة. يمكننا أن نرى أنه عند استدعاء طريقة exec () لكائن regexp غير global ، فإن الصفيف الذي تم إرجاعه هو نفسه الصفيف الذي تم إرجاعه عن طريق استدعاء string.match ().
ومع ذلك ، عندما يكون regexpobject تعبيرًا عاديًا عالميًا ، يكون سلوك exec () أكثر تعقيدًا قليلاً. يبدأ البحث عن سلسلة سلسلة في الحرف المحدد بواسطة خاصية LastIndex من RegexPobject. عندما يجد exec () النص الذي يطابق التعبير ، بعد المطابقة ، يقوم بتعيين خاصية LastIndex لـ regexpobject إلى الموضع التالي من الحرف الأخير للنص المطابق. وهذا يعني ، يمكنك التكرار من خلال جميع النصوص المطابقة في السلسلة عن طريق استدعاء طريقة exec () بشكل متكرر. عندما لم يعد بإمكان EXEC () العثور على النص المطابق ، فإنه يعيد NULL ويعيد تعيين خاصية LastIndex إلى 0.
مثال:
التعبير المنتظم مع مُحسّن ز
var url = 'http://www.baidu.com؟a=1&b=2&c=3' ؛var reg =/on budap^^؟&=-102020ism=( Budap ^؟&=201*/g؛console.log(reg.exec(url) ؛ // ["a = 1" ، "a" ، "1" ، index: 21 ، input: // ["b = 2" ، "b" ، "2" ، index: 25 ، input: ] //nullreg.lastindex = 0 ؛ // هذا الرمز مهم للغاية ، يرجى الانتباه إلى فهم console.log (reg.exec (url)) ؛ // ["A = 1" ، "A" ، "1" ، INDEX: 21 ، INPUT: http://www.baidu.com؟a=1&b=2&c=3]
تعبيرات منتظمة بدون تعديل ز
var url = 'http://www.baidu.com؟a=1&b=2&c=3' ؛var reg =/on budap^^؟&=-102020ism=( Budap ^؟&=201*/g؛console.log(reg.exec(url) ؛ // ["a = 1" ، "a" ، "1" ، index: 21 ، input: // ["a = 1" ، "a" ، "1" ، index: 21 ، input: // ["a = 1" ، "a" ، "1" ، index: 21 ، input: // ["a = 1" ، "a" ، "1" ، index: 21 ، input: console.log (reg.exec (url)) ؛ // ["a = 1" ، "a" ، "1" ، index: 21 ، input: console.log (reg.exec (url)) ؛ // ["A = 1" ، "A" ، "1" ، INDEX: 21 ، INPUT: http://www.baidu.com؟a=1&b=2&c=3]
هل وجدت شيئًا مختلفًا؟ اقرأ وصف الوظيفة بعناية وستفهم ^_ ^
هناك 4 وظائف لكائن سلسلة تدعم انتظام ، سنتحدث فقط عن 2 منها.
1. وظيفة المباراة
الاستخدام: StringObject.match (SearchValue | regexp) ، هنا نتحدث فقط عن وضع regexp
قيمة الإرجاع: صفيف يخزن نتائج مطابقة. تعتمد محتويات هذه الصفيف على ما إذا كان REGEXP لديه العلم العالمي G.
يصف:
تسترجع طريقة Match () سلسلة StringObject للعثور على واحد أو أكثر من نص مطابقة RegexP. يعتمد سلوك هذه الطريقة إلى حد كبير على ما إذا كان REGEXP لديه العلم G.
إذا لم يكن REGEXP يحتوي على Flag G ، فيمكن طريقة Match () فقط تنفيذ تطابق مرة واحدة في StringObject. إذا لم يتم العثور على نص مطابق ، فإن Match () يعود فارغًا. خلاف ذلك ، فإنه يعيد صفيفًا يخزن معلومات حول النص المطابق الذي وجدته. يقوم العنصر 0 من مجموعة Array بتخزين النص ، في حين أن نص Rest Store يطابق التعبير الفرعي للتعبير العادي. بالإضافة إلى عناصر الصفيف العادية هذه ، يحتوي الصفيف الذي تم إرجاعه أيضًا على خصائص كائن. تعلن سمة الفهرس عن موضع حرف البداية الذي يطابق النص في StringObject ، وتعلن سمة الإدخال إشارة إلى StringObject.
إذا كان لدى RegexP العلم G ، فإن طريقة Match () تؤدي بحثًا عالميًا ، حيث تجد جميع الأساسيات المطابقة في StringObject. إذا لم يتم العثور على فرعية مطابقة ، يتم إرجاع NULL. إذا تم العثور على واحد أو أكثر من الأساسيات المطابقة ، يتم إرجاع صفيف. ومع ذلك ، فإن محتوى الصفيف الذي تم إرجاعه بواسطة Global Match يختلف تمامًا عن السابق. يخزن عنصر الصفيف جميع الأساسيات المطابقة في StringObject ، ولا توجد سمة فهرس أو سمة إدخال.
مثال:
بدون تعديل ز
var url = 'http://www.baidu.com؟a=1&b=2&c=3' ؛var reg =/([^؟ & =]+) = ([^؟ & =])*/؛ var result = url.match (reg) ؛ console.log (result) ؛ // ["a = 1" ، "a" ، "1" ، index: 21 ، input: //21console.log(result.input) ؛ //http://www.baidu.com؟a=1&b=2&c=3"/201console.log(result.input) ؛ //http://www.baidu.com؟a=1&b=2&c=3
مع المعدل ز
var url = 'http://www.baidu.com؟a=1&b=2&c=3' ؛var reg =/([^؟ & =]+) = ([^؟ & =])*/g ؛ var result = url.match (reg) ؛ console.log (result) ؛ // ["a = 1" ، "b = 2" ، "c = 3"] console.log (result.index) ؛ //undefinedconsole.log(result.input) ؛ // غير محدد
هل وجدت شيئًا مختلفًا؟ اقرأ وصف الوظيفة بعناية وستفهم ^_ ^
2. استبدال الوظيفة
الاستخدام: stringObject.replace (regexp/substr ، استبدال)
قيمة الإرجاع: سلسلة جديدة تم الحصول عليها بعد استبدال المباراة الأولى أو جميع مباريات RegexP بالاستبدال.
الوصف: تنفيذ طريقة استبدال () من سلسلة stringObject عملية بحث واستبدالها. سوف يبحث عن Sundrings مطابقة regexp في StringObject واستبدال تلك السلسلة الفرعية بالاستبدال. إذا كان REGEXP لديه العلم العالمي G ، فإن طريقة استبدال () تحل محل جميع الأساسيات المطابقة. خلاف ذلك ، فإنه يحل محل الفرعية الأولى المطابقة فقط.
يمكن أن يكون الاستبدال سلسلة أو وظيفة. إذا كانت سلسلة ، فسيتم استبدال كل مباراة بالسلسلة. لكن شخصية $ في الاستبدال لها معنى محدد. كما هو موضح في الجدول التالي ، ينص على أنه سيتم استخدام السلسلة التي تم الحصول عليها من مطابقة الأنماط للاستبدال.
| شخصية | استبدال النص |
|---|---|
| $ 1 ، $ 2 ، ... 99 دولار | النص الذي يتطابق مع التعبيرات الفرعية من 1 إلى 99 في regexp. |
| $ & | فرعية تتناسب مع regexp. |
| $ ` | نص على يسار الفرعية المطابقة. |
| $ ' | نص على يمين الفرعية المطابقة. |
| $$ | رمز القياس المباشر. (هذا يعني أنه عندما تريد استبداله برمز $ ، اكتب اثنين $) |
مثال:
بدون تعديل ز
var url = 'http://www.baidu.com؟a=1&b=2&c=3' ؛var reg =/([^؟ & =] http://www.baidu.com؟a=1&b=2&c=3return 'ok' ؛}) console.log (url1) ؛ //http://www.baidu.com؟ok&b=2&c=3
مع المعدل ز
var url = 'http://www.baidu.com؟a=1&b=2&c=3' ؛var reg =/([^؟ & =]+) = ([^؟ A = 1 ، A ، 1 ، 21 ، http://www.baidu.com؟a=1&b=2&c=3 و b = 2 ، b ، 2 ، 25 ، http://www.baidu.com؟a=1&b=2&c= و | 'ok' ؛}) console.log (url1) ؛ //http://www.baidu.com؟ok&ok&ok
عندما تكون المعلمة الثانية عبارة
var url = 'http://www.baidu.com؟a=1&b=2&c=3' ؛var reg =/([^؟ & =]+) = ([^؟ & =])*/؛ // بدون تعديل GVAR url1 = url.replace (reg ، "$ &") console.log (url1) ؛ //http://www.baidu.com؟a=1&b=2&c=3var url1 = url.replace (reg ، "$ 1") console.log (url1) ؛ //http://www.baidu.com؟a&b=2&c=3var url1 = url.replace (reg ، "$ 2") console.log (url1) ؛ //http://www.baidu.com؟1&b=2&c=3var url1 = url.replace (reg ، "$ '") console.log (url1) ؛ //http://www.baidu.com؟&b=2&c=3&b=2&c=3var reg =/([^؟ & =]+) = ([^؟ & =])*/g ؛ // مع modifier gvar url1 = url.replace (reg ، "$ &") console.log (url1) ؛ //http://www.baidu.com؟a=1&b=2&c=3var url1 = url.replace (reg ، "$ 1") console.log (url1) ؛ //http://www.baidu.com؟a&b&cvar url1 = url.replace (reg ، "$ 2") console.log (url1) ؛ //http://www.baidu.com؟1&2&3var url1 = url.replace (reg ، "$ '") console.log (url1) ؛ //http://www.baidu.com؟&b=2&c=3&c=3 &
ما ورد أعلاه هو التحليل الشامل للمطابقة ، استبدال ، exec وغيرها من الوظائف في سلاسل JS والتعبيرات العادية التي أدخلها المحرر. آمل أن يكون ذلك مفيدًا للجميع. إذا كان لديك أي أسئلة ، فيرجى ترك رسالة لي وسوف يرد المحرر على الجميع في الوقت المناسب. شكرا جزيلا لدعمكم لموقع wulin.com!