C#和JavaScript正则表达式有何不同?
是否有这些差异的清单?
答案 0 :(得分:3)
这是我们碰到的一个区别,我没有在任何地方看到过记录,所以我会发布它和解决方案,希望它能帮助某人。
我们使用“[A-Z- [QVX]]”语法测试“一些但不是全部”字符类,例如“A到Z但不是Q,V或X”。不知道我们在哪里发现它,不知道它是否有记录,但它在.Net中有效。
例如,在Powershell中,使用.Net regex类,
[regex]::ismatch("K", "^[A-Z-[QVX]]$")
返回true。在JavaScript中测试相同的输入和模式,它返回false,但在JavaScript中对“^ [A-Z] $”测试“K”,它返回true。
你可以使用更正统的负向前瞻方法来表达“A到Z但不是Q,V或X”,例如“^(?![QVX])[AZ] $”,这将在Powershell中起作用和(现代)JavaScript。
鉴于Ben Atkin关于IE6和IE7不支持前瞻的观点,可能是以傻瓜式(或IE7证明)方式执行此操作的唯一方法是扩展表达式,例如“[AZ- [QVX]“ - > “ABCDEFGHIJKLMNOPRSTUWYZ”。哎哟。
答案 1 :(得分:2)
首先,一些资源:
以下是一些差异:
x(?=y)
以获取示例。)(?<foo>)