【发布时间】:2010-10-20 21:46:03
【问题描述】:
C# 和 JavaScript 正则表达式有区别吗?
是否有这些差异的列表?
【问题讨论】:
标签: c# javascript .net regex
C# 和 JavaScript 正则表达式有区别吗?
是否有这些差异的列表?
【问题讨论】:
标签: c# javascript .net regex
这是我们遇到的一个差异,我在任何地方都没有看到记录,所以我会发布它和解决方案,希望它对某人有所帮助。
我们使用“[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”。哎哟。
【讨论】:
首先,一些资源:
这里有一些区别:
x(?=y)。)(?<foo>)
【讨论】: