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

时间:2014-10-07 09:06:47

标签: c#

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

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

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

4 个答案:

答案 0 :(得分:3)

3位数,短划线3位数:

\d{3}-\d{3}

答案 1 :(得分:2)

string pattern = @"^([0-9]{3})-([0-9]{3})$";
Regex rgx = new Regex(pattern);

答案 2 :(得分:2)

var example = "123-455";
var pattern = @"\A(\d){3}-(\d){3}\Z";
var result = Regex.Match(example, pattern);

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

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

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

答案 3 :(得分:1)

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

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

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


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