回答
我認爲你的問題是,正則表達式模式是由你的正則表達式測試器和.NET Framework不同。在代碼中使用模式時,必須記住,您的字符串將被檢查轉義字符。
當你的正則表達式測試儀得到(.)\\1{2,}
,.NET框架Regex
得到(.)\1{2,}
因爲"\\"
變得\
。您可以通過更改您的模式來修復此問題,如string pattern = "(.)\\\\1{2,}";
或使用string pattern = @"(.)\\1{2,}";
禁用轉義字符。
您可以通過考慮另一種模式(如\w
)來查看差異。因爲"\w"
包含未知的轉義序列(串在開發時進行評估)
Regex.Match("\w", myTestString);
這將導致一個編譯器錯誤。爲了解決這個錯誤,我在字符串前添加了@
,編譯器得到滿足。
Regex.Match(@"\w", myTestString);
在你的情況,因爲"\\"
仍然是一個有效的字符串,你沒有得到一個錯誤。但正如您所遇到的,
Regex.Match("\\", myTestString);
Regex.Match(@"\\",myTestString);
可能會導致不同的結果。
好吧,讓我解釋一下我在這個問題上真正想要的是什麼,我想知道爲什麼參考MTF#Y2015-19555這個字符串可以通過這個正則表達式, 我不希望它是通過,從圖像本身它顯示字符串是有效的這個正則表達式 –
好的,讓我試着解釋它。在情況1(你的正則表達式測試工具)中:模式是'(。)\\ 1 {2,}'。這意味着,每個輸入匹配女巫包含任何字符後跟一個'\\'和兩個或更多'1's。第二種情況:模式(評估字符串)是'(。)\ 1 {2,}'。注意模式中缺少的'\\'。現在每個輸入都匹配,其中包含由單個字符('.')組成的組(括號包圍)。該組通過'\ 1'獲取索引1。該組本身必須重複兩次或更多次(不是任何但是相同的字符)。在'參考MTF#Y2015-19555''555'匹配。 –
如果你的目的是要禁止任何重複的數字,你可以設置一個條件整場比賽用負前瞻:
string pattern = @"^(?!.*(\d)\1.*$).+$";
在快報測試:
我的答案解決了你的問題嗎?正如我所說,你的原始正則表達式正在捕獲一個重複2次或更多次的符號,因此捕獲了'555'。我的正則表達式不允許隨後的數字重複。請讓我知道您的匹配標準是什麼,我會很高興展示C#解決方案並向您解釋。 –
- 1. 正則表達式錯誤
- 2. 正則表達式錯誤
- 3. 正則表達式錯誤
- 4. 正則表達式錯誤
- 5. 正則表達式錯誤
- 6. 正則表達式錯誤
- 7. 正則表達式(正則表達式)
- 8. 正則表達式(正則表達式)
- 9. 正則表達式(正則表達式)
- 10. 正則表達式錯誤PHP錯誤
- 11. 正則表達式表達
- 12. 正則表達式表達
- 13. 正則表達式表達
- 14. 正則表達式模式錯誤
- 15. php正則表達式 - 模式錯誤
- 16. 正則表達式正則表達式正則表達式使用正則表達式,但不是與Python
- 17. 從正則表達式表達式匹配匹配 - 錯誤
- 18. 正則表達式正則表達式返回的值正則表達式
- 19. 正則表達式正則表達式模仿正則表達式
- 20. PHP-MySQLi替換爲正則表達式/正則表達式/正則表達式
- 21. 正則表達式出錯
- 22. MVC3正則表達式驗證 - 「語法錯誤在正則表達式」
- 23. Javascript正則表達式錯誤(無效的正則表達式:/?/:無法重複)
- 24. C++的正則表達式錯誤
- 25. 正則表達式中的錯誤?
- 26. 正則表達式錯誤php
- 27. 正則表達式組參考錯誤
- 28. Perl的正則表達式錯誤
- 29. Objective-C的正則表達式錯誤
- 30. Perl正則表達式錯誤幫助
符合字符串的標準是什麼?現在,您正在捕獲一個重複2次或更多次的符號,因此會捕獲「555」。第一張屏幕截圖顯示您的測試存在問題:您使用雙反斜槓,而您應該使用1. –
實際上這不是我的項目,我正在嘗試增強它,並且 參考MTF#Y2015-19555 不可能匹配這個正則表達式, 但.net framework 2.0正則表達式讓它通過這個正則表達式 –