繁体   English   中英

c#使正则表达式接受数字值

[英]c# making a regex to accept numnerical values

我正在尝试在字段上创建一个正则表达式,接受以下内容:

其中X是0-9之间的数值,所以3之前的数字 - 和3之后的短划线。
我从以下开始,但是在破折号后添加验证我迷路了。

([0-9-])\w+([0-9-])

3位数,短划线3位数:

\\d{3}-\\d{3}

string pattern = @"^([0-9]{3})-([0-9]{3})$";
Regex rgx = new Regex(pattern);
var example = "123-455";
var pattern = @"\A(\d){3}-(\d){3}\Z";
var result = Regex.Match(example, pattern);

这不仅会搜索字符串中的模式,还会确保模式的开头和结尾位于目标字符串的开头和结尾。 这可以确保您不会获得匹配,例如:

"silly123-456stuff" or "0123-4567". 

换句话说,它既寻找一种模式,又通过将其锚定到字符串的开头和结尾来限制其长度。

我会将行的开头和结尾添加到正则表达式中

^\d{3}-\d{3}$
  • ^ =在行的开头
  • \\ d =一个数字
  • {3} =三次
  • - =短划线
  • \\ d =一个数字
  • {3} =三次
  • $ =行尾

不设置行的开头和结尾可能会捕获无效模式,例如Text123-4858


编辑:甚至比线标记更好,Kjartan提出的锚点在这种情况下是正确的答案。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM