用于javascript正则表达式的正则表达式

时间:2013-09-25 08:13:19

标签: c# javascript regex

我需要在C#中解析一些JavaScript代码并在其中找到正则表达式。

使用RegExp创建正则表达式时,我能够找到。 (因为表达式用引号括起来。)当涉及到内联定义时,类似于:

var x = /as\/df/;

我在匹配模式方面遇到困难。我需要从/开始,排除所有字符,直到找到/,但应忽略\/

由于自动分号插入或正则表达式可能是其他语句的一部分,我可能不会在语句(;)的结尾处转发,例如:

foo(/xxx/); //assume function takes regex param

如果我是对的,JavaScript中的内联正则表达式中不允许换行以节省我的一天。但是,允许以下内容:

var a=/regex1def/;var b=/regex2def/;
foo(/xxx/,/yyy/)

我需要像/.*/那样捕获正确数据的正则表达式。

4 个答案:

答案 0 :(得分:3)

您无法仅使用正则表达式可靠地解析编程语言。特别是Javascript,因为它的语法很模糊。考虑:

a = a /b/ 1
foo = /*bar*/ + 1
a /= 5 //.*/hi

此代码是有效的Javascript,但这里的/.../都不是正则表达式。

如果你知道你正在做什么;),匹配转义字符串的表达式是“分隔符,(某些转义或不分隔符),分隔符”:

 delim ( \\. | [^delim] ) * delim

在您的情况下,delim/

答案 1 :(得分:0)

这个怎么样:

Regex regexObj = new Regex(@"/(?:\\/|[^/])*/");

<强>说明:

/       # Match /
(?:     # Non-capturing group:
 \\     # Either match \
 /      # followed by /
|       # or
 [^/]   # match any character except /
)*      # Repeat any number of times
 /      # Match /

答案 2 :(得分:0)

在使用RegexHero进行多次试验后,这似乎有效。 /.*?[^\\]/。但不确定我是否遗漏任何角落案件。

答案 3 :(得分:0)

我认为这可能会对你有所帮助 var patt = / pattern / modifiers;

•pattern指定表达式的模式 •修饰符指定搜索是全局的,区分大小写的等等。