我有一个文本框,当用户尝试输入单词时,格式应该只以'PHY'开头,后跟8位数字。
例如,
正确的格式为PHY00000000
在这里,前三个字母'PHY'是常数,接下来的8位数字从00000000到10000000不等。
如何使用正则表达式条件获取此格式?不应该支持其他格式。
答案 0 :(得分:2)
如果您希望正则表达式的值从PHY00000000
到PHY10000000
,则应使用:
PHY[0-1]\d{7}
但我不喜欢这个,因为我们试图用正则表达式解释数字的值。我会用它们来分割这个输入并将其解释为具有指定范围的数字(然后你可以轻松地改变这个有效的数字范围):
static bool Valid(string input)
{
const string Pattern = @"PHY(\d{8})";
const int Max = 10000000;
var match = Regex.Match(input, Pattern);
if (match.Success)
{
int value = int.Parse(match.Groups[1].Value);
if (value <= Max)
{
return true;
}
}
return false;
}
因此,您可以从某些配置中获取Pattern
和Max
等。
答案 1 :(得分:1)
为了满足要求,以下正则表达式将起作用:
const string match = "PHY(0\d{7}|1(0){7})";
然后,您可以通过一种简单的方法验证输入:
bool ValidateInput(string input)
{
var regex = new Regex(match);
return regex.IsMatch(input);
}