【发布时间】:2015-12-26 12:40:01
【问题描述】:
是否有现有算法可以在一行有效 JavaScript 代码中查找所有文字正则表达式出现?
鉴于文字正则表达式不能是多行的,我需要检测一行代码中的所有正则表达式,或者更具体地说 - 每个正则表达式的开始和结束索引(如果存在)。
function enumRegex(textLine) {
// magic happens here;
}
var testLine = 'var regEx1 = /one/; regEx2 = /two/;';
console.log(enumRegex(testLine));
预期输出:索引对数组(找到的每个 RegEx 的开始和结束索引):
[{13,17},{29,33}]
更新: 在玩了这个Is there a regular expression to detect a valid regular expression? 之后,我不确定它是否会起作用。因此,如果有人建议使用正则表达式来检测正则表达式,则需要一个实际有效的示例。我更希望看到一种算法。
【问题讨论】:
-
1) 使用正则表达式提取 / 之间的内容 2) 将所有提取的字符串提供给 RegExp 构造函数并检查结果是否为正则表达式对象(如果您输入的不是,它将抛出 SyntaxError一个有效的正则表达式)。
-
至于finding string literals,你需要一个解析器才能得到可靠的结果。
-
该算法已经在解析器的源代码中公布。
-
这个问题最终会变成“解析器是如何工作的?”这太宽泛了,因此我投票决定将此问题作为离题结束。
-
@vitaly-t 这个问题的正确答案是“写一个解析器”。这应该给你足够的想法来工作。其他所有事情(例如,为你编写一个真正的解析器)将是太多的努力,并且代表我们需要太多的细节(记住:我们不是来为你编写代码的)。因此,如果“编写解析器”对您来说不够清楚,那么您的问题本质上是“解析器如何工作?”或“我如何编写解析器?”这太宽泛了。
标签: javascript regex