طريقة بسيطة لاستخدام الانتظام لتحديد ما إذا كان المدخلات رقمًا:
input1 = '0281234567' ؛ input2 = '0282345678' ؛ var reg = /^/d+ $/g؛reg.test(input1) ؛ //truereg.test(input2) ؛ //خطأ شنيع
لقد وجدت أن القيمة التي تم إرجاعها خلال الاختبار الثاني كانت غير صحيحة. بعد استبعاد عوامل التداخل المختلفة مثل أخطاء الكتابة ، والفشل في الحصول على القيمة ، وما إلى ذلك ، وجدت أنه لا يمكن تنفيذ REG العادية بشكل صحيح فقط أثناء التنفيذ الثاني للتنفيذ الثاني للريج. لم أواجه هذه المشكلة من قبل ، لذلك بحثت عن المعلومات ذات الصلة.
اتضح أن هذه المشكلة ناتجة في الواقع بسبب /g ، واكتشفت أنني أساءت استخدام /g بالفعل لهذه القاعدة. نظرًا لأن /g يمثل المطابقة العالمية ، فهناك LastIndex في الداخل عند الحكم على القاعدة لتسجيل آخر موقع للمباراة. عند المكالمات المتكررة ، ستستمر LastIndex في المطابقة ، مما سيؤدي إلى خطأ في الحكم. إذا فهمت المبدأ وحلته ، فسيكون ذلك واضحًا:
1. إزالة /ز ، ولا تضيف /G علامة في الإرادة إذا لم تكن هناك حاجة إلى /ز
2. قبل المباراة الثانية ، تم تعيين LastIndex يدويًا إلى 0. على سبيل المثال أعلاه: reg.lastindex () = 0.
ما سبق هو الحل الذي لا يمكن تنفيذ الاختبار العادي () بشكل صحيح بسبب سوء استخدام /g في JavaScript المقدمة لك. آمل أن يكون ذلك مفيدًا لك. إذا كان لديك أي أسئلة ، فيرجى ترك رسالة لي وسوف يرد المحرر إليك في الوقت المناسب. شكرا جزيلا لدعمكم لموقع wulin.com!