javascript - 同时使用多个正则表达式进行测试(用于句法分析)

标签 javascript regex parsing

我正在用 JavaScript 编写一个简单的语法荧光笔,我需要找到一种同时测试多个正则表达式的方法。

我的想法是找出哪个先出现,这样我就可以确定要查找的新表达式集。

表达式可以是这样的:

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

首先,我尝试了一种策略,将表达式组合成组,例如:

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

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

所以我的问题是:

有谁知道在一个字符串中查找与多个正则表达式匹配的好而合理的方法吗?

最佳答案

是否有任何特殊原因导致您不能对输入进行标记,然后测试每个标记的开头以查看它是什么类型以便突出显示?我觉得你想多了。一个简单的 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
}

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

关于javascript - 同时使用多个正则表达式进行测试(用于句法分析),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1974594/

相关文章:

c# - 从带有字段和选项的 DataGridView 创建 MySQL Alter Table 语句?

javascript - 正则表达式匹配除括号中的所有单词 - javascript

bash - 如何从 csv 列中获取第一个和最后一个元素

Java,如何将 token 的一部分识别为单独的 token ?

javascript - 如何知道浏览器是否有针对 HTML5 表单元素的特定呈现?

javascript - 将单选按钮添加到自动完成字段

java - 如何在字母和数字之间(或在数字和字母之间)拆分字符串?

python - 在 Python 中解析来自 http 请求的文本响应

JavaScript - 单击图像,然后单击 div,然后将图像移动到 div

javascript - 在与鼠标事件交互的 Canvas 元素上创建碰撞区域