同时使用多个regexps进行测试(用于句法分析)

Mic*_*sen 3 javascript regex parsing

我在JavaScript中编写一个简单的语法高亮显示器,我需要找到一种方法同时测试多个正则表达式.

我们的想法是找出哪个是第一个,所以我可以确定要查找的新表达式集.

表达式可能类似于:

/<%@/,/<%--/,/<!--//<[a-z:-]/

首先,我尝试了一种策略,我将这些表达式组合在一起,如:

/(<%@)|(<%--)|(<!--)|(<[a-z:-])/

这样我就可以找出哪个匹配的组没有未定义.但问题是,当某些子表达式包含组或反向引用时.

所以我的问题是:

有没有人知道一个好的和合理的方式寻找与字符串中的多个正则表达式匹配?

Wel*_*bog 5

是否有任何特殊原因导致您无法对输入进行标记,然后测试每个标记的开头以查看突出显示的类型?我想你是在思考这个问题.一个简单的级联if-elseif将涵盖这个很好:

if (token.startsWith("<%@")) {
  // paint it red
}
else if (token.startsWith("<%--")) {
  // paint it green
}
else if (token.startsWith("<!--")) {
  // paint it blue
}
else if (token.matches("^<[a-z:-]")) {
  // paint it black
}
Run Code Online (Sandbox Code Playgroud)

以上是伪代码,需要神奇地翻译成JavaScript.我将此作为练习留给读者.