【问题标题】:regex for javascript regular expressions用于 javascript 正则表达式的正则表达式
【发布时间】:2013-09-25 08:13:19
【问题描述】:

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

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

var x = /as\/df/;

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

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

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

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

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

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

【问题讨论】:

  • 您可以使用regexhero.net/tester 查找特定文本的正则表达式
  • 您想要一个匹配...正则表达式的正则表达式?
  • 你不想匹配正则表达式修饰符吗?
  • @SimonWhitehead:是的,我需要正则表达式来捕获 jaavscript 正则表达式。 Tim:到目前为止,我对修饰符没有任何问题,但它会是一个插件

标签: c# javascript regex


【解决方案1】:

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

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

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

如果您知道自己在做什么 ;),匹配转义字符串的表达式是“分隔符,(转义或非分隔符),分隔符”:

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

在您的情况下,delim/

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 这肯定会失败。考虑/\\/
    【解决方案3】:

    这个怎么样:

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

    解释:

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

    【讨论】:

    • 当我用 RegexHero 检查时,这个表达式没有结果
    • @Tim 你的意思可能是\/(?:\\\/|[^\/])*\/(C# 中没有分隔符)
    • @Jerry:啊,我读过 JavaScript 并认为他需要一个 JavaScript 正则表达式。在 .NET 中,这更容易:)
    • @Tim 哦,我忘了删除转义 x3 的多余反斜杠
    • @KrishnaSarma:我误读了你的问题;我以为你需要一个 JavaScript 正则表达式,而不是一个 .NET。已编辑。
    【解决方案4】:

    我认为这可能会对您有所帮助 var patt=/模式/修饰符;

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

    【讨论】:

      猜你喜欢
      • 2012-11-23
      • 1970-01-01
      • 2012-01-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-07
      • 2015-12-29
      • 1970-01-01
      相关资源
      最近更新 更多