2013-09-25 109 views
0

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

当正则表达式使用RegExp创建时,我能够找到。 (由于表达引号括起来。)当涉及到内联定义是这样的:

var x = /as\/df/; 

我在匹配模式面临的困难。我需要从/开始,排除所有字符,直到找到/,但应该忽略\/。因为自动分号插入或正则表达式的

我可以不上发言(;)结束继电器可能是其他语句的一部分,是这样的:

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

如果我的权利,一个换行符不允许在JavaScript的内联正则表达式中保存我的一天。但是,以下是正确的:

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

我需要的正则表达式成才像/.*/,抓住正确的数据。

+0

可以使用http://regexhero.net/tester/找到特定的正则表达式文本 – rt2800

+0

你想要一个匹配正则表达式的正则表达式吗? –

+0

难道你不想匹配正则表达式修饰符? –

回答

0

如何:

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

说明:

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

当我使用RegexHero进行检查时,这个表达式不会产生结果 –

+0

@Tim你可能意思是'\ /(?:\\\// | [^ \ /])* \ /'(C#中没有分隔符) – Jerry

+0

@Jerry:啊,我阅读JavaScript并认为他需要一个JavaScript正则表达式。在.NET中,它更容易:) –

0

与RegexHero经过多次试验,这似乎工作。 /.*?[^\\]/。但不知道我是否缺少任何角落案例。

+0

这肯定会失败。考虑'/ \\ /'。 –

3

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

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

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

如果你知道你在做什么),一个表达式匹配转义字符串为“分隔符,(东西逃跑或没有分隔符),分隔符”:在

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

其中delim/您案件。

0

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

•模式指定式的模式 •修饰符指定如果搜索应该是全球性的,区分大小写等

相关问题