C#和JavaScript正则表达式之间的区别是什么?

27

C# 和 JavaScript 的正则表达式有所不同吗?

是否有这些差异的列表?

2个回答

6

这里有一个我们遇到的差异,在任何地方都没有看到过记录,所以我将在这里发布它及其解决方案,希望能帮助到某些人。

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

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

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

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

您可以使用更传统的负向先行断言方法来表示“从A到Z,但不包括Q、V或X”,例如“ ^(?![QVX])[A-Z] $”,这将在PowerShell和(现代)JavaScript中都起作用。

鉴于Ben Atkin关于IE6和IE7不支持前瞻的观点,也许在一个无懈可击的(或IE7-proof)方式中执行此操作的唯一方法是扩展表达式,例如“[A-Z-[QVX]”->“ABCDEFGHIJKLMNOPRSTUWYZ”。痛苦。


5
好的,那"A-PR-UWYZ"就足够了,对吧? - Daniel

3

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接