البحث عن لغات البرمجة
هناك العديد من لغات البرمجة ، مثل Java و JavaScript و PHP و C و C ++.
أنشئ التعبير العادي الذي يعثر عليه في السلسلة الموضوع: Java JavaScript PHP C ++ C
:
let regexp = /your regexp/g;
alert("Java JavaScript PHP C++ C".match(regexp)); // Java JavaScript PHP C++ C
يمكن أن تكون الفكرة الأولى هي سرد اللغات التي يوجد بها “|” في الوسط.
لكن هذا لا يعمل بشكل صحيح:
let regexp = /Java|JavaScript|PHP|C|C\+\+/g;
let str = "Java, JavaScript, PHP, C, C++";
alert( str.match(regexp) ); // Java,Java,PHP,C,C
يبحث محرك التعبير العادي عن البدائل واحدة تلو الأخرى. هذا هو: أولاً يتحقق مما إذا كان لدينا Java
، وإلا – يبحث عن JavaScript
وما إلى ذلك.
ونتيجة لذلك ، لا يمكن العثور على JavaScript
مطلقًا ، فقط لأنه يتم تحديد Java
أولاً.
نفس الشيء مع C
و C ++
.
هناك حلان لهذه المشكلة:
- قم بتغيير الترتيب للتحقق من المطابقة الأطول أولاً:
JavaScript | Java | C \ + \ + | C | PHP
. - دمج المتغيرات بنفس البداية:
Java (Script)؟ | C (\ + \ +)؟ | PHP
.
بشكل عملي:
let regexp = /Java(Script)?|C(\+\+)?|PHP/g;
let str = "Java, JavaScript, PHP, C, C++";
alert( str.match(regexp) ); // Java,JavaScript,PHP,C,C++