在带有表单的html页面中,我有两个字段:
@Html.TextBoxFor(model => model.HouseNumberSuffix)
@Html.TextBoxFor(model => model.PhoneNumber)
在此页面的模型中,此字段具有以下正则表达式
[RegularExpression("[A-Za-z0-9]*[0-9]+[A-Za-z0-9]*",
ErrorMessage = "At least one digit is required for this field")]
public string HouseNumberSuffix { get; set; }
[RegularExpression("[0-9]+", ErrorMessage = "Only numbers allowed")]
public string PhoneNumber { get; set; }
因此,当我尝试提交表单时,上述字段无效,即使我没有在文本框中写任何内容。我想修改正则表达式以接受空字符串。到现在为止我已经尝试过:
regex allow only numbers or empty string,
Regex, Number or Empty
谢谢!
答案 0 :(得分:1)
匹配模式的0或1次:
([A-Za-z0-9]*[0-9]+[A-Za-z0-9]*)?
([0-9]+)?
( )
用于分组表达式逻辑和
?
代表0或1
答案 1 :(得分:1)
加号至少需要一个字符,因此将其更改为[A-Za-z0-9]*
将有助于第一个和[0-9]*
。但是,这样,第一个也只允许字母。您可能还希望分别使用^
和$
锚定字符串
(?:(?=^$)|(?=^\D*\d))^\w*$
# either an empty string
# or at least one digit in the lookaheads
# afterwards only digits and letters are allowed