繁体   English   中英

匹配 Javascript 中的正则表达式字符串

[英]Matching regular expression string in Javascript

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

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

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

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

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

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

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

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM