1
与http://regexhero.net/tester/正则表达式的路由约束
^(?!Bar$)
Foo
比赛 测试
Bar
不匹配FooBar
比赛BarBaz
比赛FooBarBaz
比赛
设置路由约束时,我必须使用^(?!Bar$).*
才能得到相同的结果。这是为什么?
与http://regexhero.net/tester/正则表达式的路由约束
^(?!Bar$)
Foo
比赛Bar
不匹配FooBar
比赛BarBaz
比赛FooBarBaz
比赛设置路由约束时,我必须使用^(?!Bar$).*
才能得到相同的结果。这是为什么?
第一个表达式实际上不会“覆盖”字符串的任何部分。请参阅^
和(?!...)
子表达式在测试字符串中的特定位置(锚点)处匹配(实际上它们都尝试在相同的位置进行匹配 - 正好在开头 - 并且立即失败)。
而这 - ^(?!Bar$).*
- 实际上'涵盖'所有的字符串。我想这是不同的。
谢谢,我已经通知测试人员关于测试仪可能出现的问题。 – Stijn
@Stijn - Raina77ow有一个很好的答案,并且我怀疑正则表达式约束在后台有代码来检查匹配长度是否等于字符串长度,这可以解释这种行为。我也在这里回答你的问题... https://getsatisfaction.com/bucketsoft/topics/regex_route_constraint_with_negative_lookahead_in_mvc_3 –
@SteveWortham感谢您的意见 – Stijn