【问题标题】:Differences between C# and JavaScript Regular Expressions? [closed]C# 和 JavaScript 正则表达式的区别? [关闭]
【发布时间】:2010-10-20 21:46:03
【问题描述】:

C# 和 JavaScript 正则表达式有区别吗?

是否有这些差异的列表?

【问题讨论】:

    标签: c# javascript .net regex


    【解决方案1】:

    这是我们遇到的一个差异,我在任何地方都没有看到记录,所以我会发布它和解决方案,希望它对某人有所帮助。

    我们使用“[A-Z-[QVX]]”语法测试“一些但不是全部”字符类,例如“A 到 Z,但不是 Q、V 或 X”。不知道我们在哪里找到它,不知道它是否有文档记录,但它可以在 .Net 中使用。

    例如,在 Powershell 中,使用 .Net 正则表达式类,

    [regex]::ismatch("K", "^[A-Z-[QVX]]$") 
    

    返回真。在 JavaScript 中测试相同的输入和模式,它返回 false,但在 JavaScript 中测试“K”和“^[A-Z]$”,它返回 true。

    您可以使用更正统的负前瞻方法来表达“A to Z but not Q, V or X”,例如“^(?![QVX])[AZ]$”,这在 Powershell 中都可以使用和(现代)JavaScript。

    鉴于 Ben Atkin 上面关于 IE6 和 IE7 不支持前瞻的观点,可能以万无一失(或 IE7-proof)的方式做到这一点的唯一方法是将表达式扩展,例如“[AZ- [QVX]”->“ABCDEFGHIJKLMNOPRSTUWYZ”。哎哟。

    【讨论】:

    • 好吧 [A-PR-UWYZ] 就足够了,不是吗?
    【解决方案2】:

    首先,一些资源:

    这里有一些区别:

    • IE6 和 IE7 不支持 Lookahead。 (例如,在 MDC 指南中搜索 x(?=y)。)
    • JavaScript 不支持命名的捕获组。示例:(?<foo>)
    • JavaScript 支持的元字符列表要短得多。

    【讨论】:

      猜你喜欢
      • 2016-11-18
      • 2012-02-22
      • 2023-04-07
      • 2016-03-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-18
      相关资源
      最近更新 更多