2011-06-30 15 views
2

.NETのRegex.IsMatch関数を使用して、文字列が8文字で、式AK-\d\d\d\d[fF]と一致するかどうかを確認したいと考えています。したがって、AK-9442Fは一致しますが、AK-9442F2でもAK-9442でも一致しません。私はどのように表現を構成しますか?静的Regex.IsMatchを使用してn文字の文字列の正規表現

答えて

4

、あなたが行うことができます:

if (Regex.IsMatch(myTestString, @"^AK-\d{4}[fF]$")) { 
    // passed 
} 

あなたの目的のために働く必要があります。壊れ、それはです:

^  # must match beginning of the string 
    AK-  # string literal, "AK-" 
    \d{4} # \d is digit, {4} means must be repeated 4 times 
    [fF] # either upper or lowercase F 
$  # must match end of string 

GSkinner Test

+0

感謝。 – blueshift

+0

@blueshift:あなたは大歓迎です。 –

0

あなたはそれを持ってalread。

^AK-[0-9]{4}[Ff]$

+0

ストリングアンカーの終端が必要です。それ以外の場合は、AK-9442F2が一致します。 – Dunes

+0

ご協力ありがとうございます。 – blueshift

4

使用このパターン:この動作するはずのような

何か^AK-\d{4}[Ff]$

^は、文字列の先頭にマッチし、$は、文字列の末尾にマッチします。これにより、文字列全体が一致する必要があり、部分一致が回避されます。 \d{4}は正確に4桁に一致します。簡潔な、まだ詳細な回答のため

string pattern = @"^AK-\d{4}[Ff]$"; 
bool result = Regex.IsMatch("AK-1234F", pattern); 
Console.WriteLine(result); 
+0

ありがとうございました。あなたのものは以下のBradのものと同じくらい良かったです。 – blueshift

3
Regex.IsMatch(myString, @"^AK-\d{4}[fF]$") 
+0

お返事いただきありがとうございます! – blueshift