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