regex C#和JavaScript正则表达式的区别?[已关闭]

dwthyt8l  于 2023-10-22  发布在  C#
关注(0)|答案(2)|浏览(118)

已关闭,此问题需要更focused。它目前不接受回答。
**想改善这个问题吗?**更新问题,使其只关注editing this post的一个问题。

4年前关闭。
Improve this question
C#和JavaScript正则表达式有什么不同吗?
是否有这些差异的列表?

bn31dyow

bn31dyow1#

这里有一个差异,我们遇到了,我还没有看到任何地方的文件,所以我会发布它,和解决方案,在这里,希望它会帮助别人。
我们使用“[A-Z-[QVX]]”语法测试“一些但不是全部”字符类,例如“A到Z但不是Q、V或X”。不知道我们在哪里找到的,也不知道有没有记录在案,但它在. Net上有效。
例如,在PowerShell中,使用.Net regex类,

[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不支持lookahead的观点,可能唯一的方法是以一种傻瓜式(或IE7式)的方式来实现这一点,就是扩展表达式,例如“[A-Z-[QVX]”->“ABCDEFGHIJKLMNOPRSTUWYZ”。哎哟

ih99xse1

ih99xse12#

首先是一些资源:

以下是一些差异:

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

相关问题