Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Html 正则表达式不匹配_Html_Regex_Asp.net Mvc - Fatal编程技术网

Html 正则表达式不匹配

Html 正则表达式不匹配,html,regex,asp.net-mvc,Html,Regex,Asp.net Mvc,在带有表单的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

在带有表单的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; }
所以当我试图提交表单时,上面的字段是无效的,即使我没有在它们的文本框中写任何东西。我想修改正则表达式以接受空字符串。到目前为止,我一直在尝试: ,

谢谢

匹配模式的0或1倍:

([A-Za-z0-9]*[0-9]+[A-Za-z0-9]*)?

([0-9]+)?
()
用于对表达式逻辑和
对于0或1

加号至少需要一个字符,因此将其更改为
[A-Za-z0-9]*
将有助于第一个加号和
[0-9]*
第二个加号。然而,这样一来,第一个也只允许字母。您可能还希望分别使用
^
$
锚定字符串。

正如@Simon指出的,这并不能真正回答您的问题,因此对于第一个问题,以下表达式将起作用:

(?:(?=^$)|(?=^\D*\d))^\w*$
# either an empty string
# or at least one digit in the lookaheads
# afterwards only digits and letters are allowed

请参阅。

加号至少需要一个字符,因此将其更改为
[A-Za-z0-9]*
将有助于第一个字符,而
[0-9]*
将有助于第二个字符。然而,这样一来,第一个也只允许字母。您可能还希望分别使用
^
$
锚定字符串。@Jan为什么不将此作为答案编写;如果我在写一篇文章,我会这么说answer@SpoonMeiser:完成。这样做会丢失“此字段至少需要一位数字”的条件。[A-Za-z0-9]*匹配“”(无)但也匹配“abc”(无数字)@SimonPA:这正是我的答案中所写的内容:然而,这样一来,第一个也只允许字母。