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