2016-06-09 111 views
3

我需要在c#中使用正則表達式的幫助。我有一個字符串c#正則表達式與長度測試

a= lF-rwn-8343775 
b= Mr. Roshan K. Gujarathi 

我想正則表達式匹配這一點,並獲得在C#中的布爾值我已經試過這樣

return Regex.IsMatch(a, @"([a-zA-Z])-([0-9])*$"); 
return Regex.IsMatch(b, @"([a-zA-Z]). ([a-zA-Z]) ([a-zA-Z]). ([a-zA-Z])*$"); 

我也曾嘗試return Regex.IsMatch(a, @"([a-zA-Z])-([a-zA-Z])-([0-9])*$");的一個,但沒有使用模式

但是這顯示爲錯誤。我想匹配一個長度,即

首先2 char然後 - 然後2 char - 然後8 int和相同的名稱像 2-4 char然後。 10-15 char然後'空間'然後1 char。那麼在你的模式(^$

  • 認沽量詞儘可能10-15焦炭

  • +2

    我不完全跟隨你所追求的,但在正則表達式,你有'{最小,最大}'操作員。所以'[a-z] {2,3}'表示最少2個,最多3個字母。 – npinti

    +0

    將您的正則表達式粘貼到[regex101](https://regex101.com/)中,並檢查解釋以查看它們是否符合您的期望。 – ClasG

    +0

    感謝您的意見,但實際上我不知道如此問了一個問題,抱歉... @npinti – Roshan

    回答

    4
    1. 使用錨。
    2. 避免使用分組比賽,如果你不想讓他們

    所以,它應該工作爲:

    return Regex.IsMatch(a, @"^[a-zA-Z]{2}-[a-zA-Z]{2}-[0-9]{8}$"); 
    return Regex.IsMatch(b, @"^[a-zA-Z]{2,4}\. [a-zA-Z]{10,15} [a-zA-Z]\. [a-zA-Z]{10,15}$"); 
    
    +0

    謝謝你的回答@ hjpotter92這就是我一直在尋找的謝謝你的幫助伴侶謝謝 – Roshan

    +0

    '\\。'?爲什麼逃跑? –

    +0

    @ThomasAyoub'.'本身將匹配正則表達式中的任何字符。爲了匹配一個字面上的'。'字符,它需要被轉義。 @Roshan – hjpotter92