Encuentra lenguajes de programación
Hay muchos lenguajes de programación, por ejemplo, Java, JavaScript, PHP, C, C ++.
Crea una expresión regular que los encuentre en la cadena Java JavaScript PHP C++ C:
let regexp = /your regexp/g;
alert("Java JavaScript PHP C++ C".match(regexp)); // Java JavaScript PHP C++ C
La primera idea puede ser listar los idiomas con | en el medio.
Pero eso no funciona bien:
let regexp = /Java|JavaScript|PHP|C|C\+\+/g;
let str = "Java, JavaScript, PHP, C, C++";
alert( str.match(regexp) ); // Java,Java,PHP,C,C
El motor de expresiones regulares busca las alternancias una por una. Es decir: primero verifica si tenemos Java, de lo contrario – busca JavaScript y así sucesivamente.
Como resultado, nunca se puede encontrar JavaScript, simplemente porque encuentra primero Java.
Lo mismo con C y C++.
Hay dos soluciones para ese problema:
- Cambiar el orden para comprobar primero la coincidencia más larga:
JavaScript|Java|C\+\+|C|PHP. - Fusionar variantes con el mismo inicio:
Java(Script)?|C(\+\+)?|PHP.
En acción:
let regexp = /Java(Script)?|C(\+\+)?|PHP/g;
let str = "Java, JavaScript, PHP, C, C++";
alert( str.match(regexp) ); // Java,JavaScript,PHP,C,C++