C#中的正则表达式为空,0或长度为5的数字。 (邮政编码)

时间:2015-06-19 15:00:02

标签: c# regex

我坚持这个问题。我有一个邮政编码的输入字段,但是,我们的数据库有很多记录,其中邮政编码是0.我目前在字段上设置了正则表达式,以确保zip为空或是5位数值。

因为这样,如果你去更新一个值设置为" 0"的记录,它会触发验证消息,因为它不是空字符串或5位数字符串。我想让它能够接受所有这三种状态(空," 0"或5位数字)。

(^ \ s {0,5} $)|(^ \ d {5} $) - 这就是我用过的空数字或5位数字,它似乎工作正常。< / p>

(^?:( \ s {0} $)|(^?:( 0){1} $ | \ d {5})$) - 我已经尝试过空,&# 34; 0&#34;或5位数字,但它不起作用。我真的几乎不知道发生了什么,我几乎无法理解正则表达式。感谢帮助,谢谢!

4 个答案:

答案 0 :(得分:3)

我会选择:

(^([0]|[0-9]{5})$)

输入为0或任意5个数字组合。

正如评论中所指出的,正则表达式用于匹配,当没有任何内容时你无法匹配

答案 1 :(得分:2)

不要使用Regex检查空字符串:

if String.IsNullOrEmpty(myString)
{
    // String is empty, do something.
    Console.WriteLine("No string here!");
}
else
{
    // Do Regex here
}

答案 2 :(得分:1)

您始终希望匹配字符串的开头和结尾,因此您不需要在Regex组中使用这些字符串。对于速记字符'\ s',这仅仅代表一个空格。

您想要匹配的内容:

  • 空字符串
  • 单零
  • 五位数

为此,希望以下工作:

^(\ S {0} | 0 | \ d {5})$

答案 3 :(得分:0)

使用此regexrp (^$)|0|\d{5}

但首选string.IsNullOrEmpty()int.Parse()