我正在看一个C#Regex教程,该教程声明“\ d”匹配0到9的单个数字。
然而,当我运行以下程序时。
static void Main(string[] args)
{
string s = "45";
Regex myRegex = new Regex(@"(\d)");
if( myRegex.IsMatch(s))
{
System.Console.WriteLine("Matched");
}
else
{
System.Console.WriteLine("Not Matched");
}
Console.ReadKey();
}
控制台打印出“匹配”。
答案 0 :(得分:10)
好吧,它找到4
,因为正则表达式匹配不必覆盖整个输入字符串。如果你想确保你的字符串仅一个数字,包括标记字符串开头和结尾的锚点:
Regex myRegex = new Regex(@"^(\d)$");
现在匹配必须从字符串的开头开始(由^
标记)并且必须在字符串的末尾结束(由$
标记)。因此,只允许一位数输入。省略此选项允许正则表达式匹配输入的任何子字符串。
答案 1 :(得分:3)
Regex myRegex = new Regex(@"^\d$");