3 回答
TA贡献1801条经验 获得超8个赞
我相信有人可以提供更简洁的答案,但模式匹配是要走的路。
using System.Text.RegularExpressions;
string test = "32P125";
// 2 integers followed by any upper cased letter, followed by 3 integers.
Regex regex = new Regex(@"\d{2}[A-Z]\d{3}", RegexOptions.ECMAScript);
Match match = regex.Match(test);
if (match.Success)
{
//// Valid string
}
else
{
//// Invalid string
}
TA贡献1835条经验 获得超7个赞
考虑到“P”必须按字面匹配——
using System;
using System.Text.RegularExpressions;
public class Program
{
public static void Main()
{
string st1 = "32P125";
string st2 = "N23P33";
Regex rg = new Regex(@"\d{2}P\d{3}");
// If 'P' is not to be matched literally, reeplace above line with below one
// Regex rg = new Regex(@"\d{2}[A-Za-z]\d{3}");
Console.WriteLine(rg.IsMatch(st1));
Console.WriteLine(rg.IsMatch(st2));
}
}
输出
True
False
TA贡献1786条经验 获得超11个赞
我会鼓励使用MaskedTextProvidedover Regex。
这不仅看起来更干净,而且更不容易出错。
示例代码如下所示:
string Num = "12P123";
MaskedTextProvider prov = new MaskedTextProvider("##P###");
prov.Set(Num);
var isValid = prov.MaskFull;
if(isValid){
string result = prov.ToDisplayString();
Console.WriteLine(result);
}
- 3 回答
- 0 关注
- 152 浏览
添加回答
举报