1

http://regexhero.net/tester/测试

^(?!Bar$)
  • Foo火柴
  • Bar不匹配
  • FooBar火柴
  • BarBaz火柴
  • FooBarBaz火柴

设置路由约束时,我必须使用^(?!Bar$).*才能获得相同的结果。这是为什么?

4

1 回答 1

3

第一个表达式实际上并没有“覆盖”字符串的任何部分。看,^(?!...)子表达式都在测试字符串中的特定位置(锚点)匹配(实际上它们都试图在相同的位置匹配 - 就在开头 - 并立即失败)。

而这 - ^(?!Bar$).*- 实际上“覆盖”了所有字符串。我想这就是区别。

于 2012-10-01T08:12:55.693 回答