2017-02-01 148 views
1

我有這個網址http://localhost:64685/Forum/Runner/runner_job/24af786e正則表達式匹配「/ 24af786e」字母和數字

我想regex來檢查URL,具有/然後在8×字母或(在URL等)的數字網址結束。

這是我最好的嘗試,到目前爲止,我知道這不是好還是正確的:/[^/A-Z]{9}/g

有人能指導我在正確的方向?

編輯

我如何運行正則表達式,

Regex regex = new Regex(@"/\/[^\W_]{8}$/"); 
Match match = regex.Match(url); 
if (match.Success) 
{ 
    url.Replace(match.Value, ""); 
} 
+1

使用此:'/ \/[a-zA-Z0-9] {8} $ /' – anubhava

+0

或'/ \/[^ \ W _] {8} $ /' –

+0

@WiktorStribiżew您的正則表達式返回false if我用它與我的網址 –

回答

2

使用

Regex regex = new Regex(@"/[^\W_]{8}$"); 
// Or, to make it match only ASCII letters/digits: 
// Regex regex = new Regex(@"/[^\W_]{8}$", RegexOptions.ECMAScript); 
url = regex.Replace(url, ""); 

無需用正則表達式替換前檢查匹配。請注意,您使用了String.Replace方法,而不是Regex.Replace方法,並且未將新值分配給url(字符串在C#中不可變)。請參閱regex demo

詳細

  • / - 字面/
  • [^\W_]{8} - 正好8個字母或數字
  • [^\W_]比非字(\W)和_字符以外的字符相匹配) $ - 字符串結尾。

如果您只需要匹配ASCII字母/數字,請通過RegexOptions.ECMAScript選項。

+1

'[^ \ W_]'和'[a-zA-Z0-9]'之間有什麼區別?如果沒有,那麼後者在我看來更加明確。 – sp00m

+0

@ sp00m:見我的底部筆記。有一個區別,因爲在C#中,速記類默認情況下是可識別Unicode的,但我們可以通過專用選項將其關閉。另外,'[\ w - [_]]'也是一個可讀的.NET兼容結構,可以用來代替'[^ \ W_]'。拼出變體也很好用。 –

+0

所以你的會匹配更多的字符,比如'à'或'ô',對吧? – sp00m

相關問題