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++