首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >javascript正则表达式的正则表达式

javascript正则表达式的正则表达式
EN

Stack Overflow用户
提问于 2013-09-25 16:13:19
回答 4查看 168关注 0票数 0

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

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

代码语言:javascript
复制
var x = /as\/df/;

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

由于自动插入分号或正则表达式可能是其他语句的一部分,我可能不会在语句末尾(;)进行中继,如下所示:

代码语言:javascript
复制
foo(/xxx/); //assume function takes regex param

如果我是对的,为了节省时间,在JavaScript的内联正则表达式中不允许换行符。但是,允许执行以下操作:

代码语言:javascript
复制
var a=/regex1def/;var b=/regex2def/;
foo(/xxx/,/yyy/)

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

EN

回答 4

Stack Overflow用户

发布于 2013-09-25 16:55:22

您无法仅使用正则表达式可靠地解析编程语言。尤其是Javascript,因为它的语法相当模糊。考虑一下:

代码语言:javascript
复制
a = a /b/ 1
foo = /*bar*/ + 1
a /= 5 //.*/hi

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

如果您知道自己在做什么;),用于匹配转义字符串的表达式是"delimiter,(某种转义或不是分隔符),delimiter":

代码语言:javascript
复制
 delim ( \\. | [^delim] ) * delim

在您的例子中,delim/

票数 3
EN

Stack Overflow用户

发布于 2013-09-25 16:21:55

这样如何:

代码语言:javascript
复制
Regex regexObj = new Regex(@"/(?:\\/|[^/])*/");

说明:

代码语言:javascript
复制
/       # Match /
(?:     # Non-capturing group:
 \\     # Either match \
 /      # followed by /
|       # or
 [^/]   # match any character except /
)*      # Repeat any number of times
 /      # Match /
票数 0
EN

Stack Overflow用户

发布于 2013-09-25 16:31:03

在对RegexHero进行了几次试验之后,这似乎是可行的。/.*?[^\\]/。但是不确定我是不是漏掉了什么角落的案例。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18999612

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档