【问题标题】:Matching regular expression string in Javascript在Javascript中匹配正则表达式字符串
【发布时间】:2011-07-05 09:10:29
【问题描述】:

有谁知道如何从 javascript 代码中找到正则表达式字符串? 例如 var pattern = /一些正则表达式/;

是否可以使用正则表达式:)?

【问题讨论】:

  • 很不清楚你的问题是什么。你想用正则表达式匹配一个字符串吗?

标签: javascript regex parsing


【解决方案1】:

如果我的问题是正确的,并且您需要一个正则表达式来查找 JavaScript 程序中的所有正则表达式,那么我认为这是不可能的。 JavaScript 中的正则表达式不必使用 // 语法,它可以定义为字符串。即使是成熟的 JavaScript 解析器也不够聪明,无法在此处检测正则表达式,例如:

var re = "abcde";
var regexClass = function() { return RegExp; }
var regex = new regexClass()(re);

所以我会放弃这个想法,除非你只想涵盖几个非常基本的案例。

【讨论】:

    【解决方案2】:

    你想让一个正则表达式匹配一个正则表达式吗?疯狂的。这可能涵盖最简单的情况。

    new RegExp("\/.+\/")
    

    但是,我查看了 Javascript Textmate 捆绑包,它有 2 个正则表达式用于查找正则表达式的开始和结束。

    begin = '(?<=[=(:]|^|return)\s*(/)(?![/*+{}?])'
    end   = '(/)[igm]*';
    

    您可能会将其用作实现目标的灵感。

    【讨论】:

      【解决方案3】:

      感谢您的回答,我还发现这几乎是不可能完成的任务,但这是我的正则表达式,它可以很好地解析源代码:

      this.mainPattern = new RegExp(//single line comment
                                 "(?://.*$)|"+
                                 //multiline comment
                                 "(/\\*.*?($|\\*/))"+
                                 //single or double quote strings
                                 "|(?:(?:\"[^\"\\\\]*(?:\\\\.[^\"\\\\]*)*\")|(?:'[^'\\\\]*(?:\\\\.[^'\\\\]*)*'))"+
                                 //regular expression literal in javascript code
                                 "|(?:(?:[/].+[/])[img]?[\\s]?(?=[;]|[,]|[)]))"+
                                 //brackets
                                 "|([{]|[(]|[\[])|([}]|[)]|[\\]])", 'g');
      

      【讨论】:

        猜你喜欢
        • 2012-06-05
        • 2013-12-25
        • 1970-01-01
        • 2016-06-26
        相关资源
        最近更新 更多