2011-06-30 52 views
2

我想使用.NET的Regex.IsMatch函数来确定一个字符串是否长度为8个字符并且匹配表达式AK-\d\d\d\d[fF]。所以,AK-9442F可以匹配,但不是AK-9442F2也不是AK-9442。我将如何构建表达式?正则表达式为n个字符的字符串

回答

4

使用静态Regex.IsMatch,你可以这样做:

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