查找编程语言
有很多编程语言,例如 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++