我坚持这个问题。我有一个邮政编码的输入字段,但是,我们的数据库有很多记录,其中邮政编码是0.我目前在字段上设置了正则表达式,以确保zip为空或是5位数值。
因为这样,如果你去更新一个值设置为" 0"的记录,它会触发验证消息,因为它不是空字符串或5位数字符串。我想让它能够接受所有这三种状态(空," 0"或5位数字)。
(^ \ s {0,5} $)|(^ \ d {5} $) - 这就是我用过的空数字或5位数字,它似乎工作正常。< / p>
(^?:( \ s {0} $)|(^?:( 0){1} $ | \ d {5})$) - 我已经尝试过空,&# 34; 0&#34;或5位数字,但它不起作用。我真的几乎不知道发生了什么,我几乎无法理解正则表达式。感谢帮助,谢谢!
答案 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()
。