使用正则表达式识别字符串中的模式
本文关键字:模式 字符串 识别 正则表达式 | 更新日期: 2024-11-05 02:48:52
如果这是一个重复的问题,我深表歉意,因为我知道StackOverflow上有很多关于正则表达式的信息,但我还没有找到我需要的答案或帮助水平。
我有一个长度需要为 8 的字符串,其中:
前两个字符是字母
接下来的五个字符是数字
最后一个字符是一个字母
例如:"AB12345C"
我一直在使用MSDN和DotNetPerls的例子来尝试理解如何正确使用参数,但是经过几天的阅读,我仍然无法通过它。
我目前正在尝试使用:
public Tuple<bool, string> stringFormatCheck(string input)
{
if (Regex.IsMatch(input, @"^[a-zA-Z]'d{2}[0-9]'d{5}[a-zA-Z]$") == true)
return Tuple.Create(true, "String is Fine");
else
return Tuple.Create(false, "String Format is incorrect");
}
有人可以告诉我如何正确使用这个论点或在我可以更好地理解正则表达式类的地方吗? 谢谢。
编辑1:我的第一个参数中的第二个Z现在大写。
正确的模式是
"^[A-Za-z]{2}[0-9]{5}[A-Za-z]$"
恕我直言,清晰的解释:
^ - string start (anchor)
[A-Za-z]{2} - 2 letters A..Z or a..z
[0-9]{5} - 5 digits 0..9
[A-Za-z] - letter A..Z or a..z
$ - string end (anchor)
所以实现可以是
public Tuple<bool, string> stringFormatCheck(string input)
{
if (Regex.IsMatch(input, @"^[A-Za-z]{2}[0-9]{5}[A-Za-z]$"))
return Tuple.Create(true, "String is Fine");
else
return Tuple.Create(false, "String Format is incorrect");
}
请注意,[0-9]
是比'd
更好的选择,因为您可能,不想让波斯数字像"AB۰۱۲۳۴C"
;
试试这个: ^[a-zA-Z]{2}[0-9]{5}[a-zA-Z]$
您的正则表达式:^[a-zA-z]'d{2}[0-9]'d{5}[a-zA-Z]$
由于多种原因不起作用。 首先,第二个 z 应该大写。 然后,第一个'd
试图匹配一个数字,所以你说"匹配任何字母,然后匹配两位数"。 你在第二个'd
上犯了同样的错误:你说"匹配任何数字([0-9]
),然后匹配5个数字('d{5}
)。