Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/30.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.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
Asp.net 使MaskedEditExtender掩码成为可选_Asp.net_Regex_Masking - Fatal编程技术网

Asp.net 使MaskedEditExtender掩码成为可选

Asp.net 使MaskedEditExtender掩码成为可选,asp.net,regex,masking,Asp.net,Regex,Masking,这里有一个MaskedEditExtender,带有使用正则表达式的验证器。 它用8或9位数字验证电话号码: <asp:TextBox Style="width: 135px" ID="txtTelefone" runat="server"></asp:TextBox> <ajaxToolkit:MaskedEditExtender ID="MaskedEditExtender_Telefone" TargetControlID="txtTelefo

这里有一个MaskedEditExtender,带有使用正则表达式的验证器。
它用8或9位数字验证电话号码:

<asp:TextBox Style="width: 135px" ID="txtTelefone" runat="server"></asp:TextBox>
<ajaxToolkit:MaskedEditExtender
    ID="MaskedEditExtender_Telefone"
    TargetControlID="txtTelefone"
    runat="server"
    Mask="\(99\)9999NN9999"
    OnInvalidCssClass="txt-TextBox-Error"
    ValidateRequestMode="Enabled"
    ErrorTooltipEnabled="True"
    Filtered="-"
    PromptCharacter=" "
    ClearMaskOnLostFocus="false"/>
<ajaxToolkit:MaskedEditValidator
    ID="MaskedEditValidator_Telefone"
    runat="server"
    ControlExtender="MaskedEditExtender_Telefone"
    ControlToValidate="txtTelefone"
    ValidationExpression="^\(\d\d\)\d\d\d\d+-\d\d\d\d$"
    Display="Dynamic"></ajaxToolkit:MaskedEditValidator>

问题是:正如您在正则表达式中看到的,用户可以在“')和“-”之间放置4或5个数字。
但是“掩码”字段不允许它

当我没有键入所有字符时,我需要MaskededitXtender停止哭泣,因为它们不是必需的。验证字段所需的全部内容是正则表达式。

MaskedEditExtender只提供一个掩码,该掩码允许我只键入数字,并且在列表中有一个(99)。它不需要验证任何内容。

好吧,MaskedEditExtender中似乎没有这样的功能允许您在掩码中放置少于字符,所以我做了一个小的解决方法:
我在掩码中加入了autocomplete,调整了正则表达式以接受字符串末尾的空白,并在每次我想使用文本框的值时对其进行修剪

  • MaskedEditValidator
    ValidationExpression=“^\(\d{2}\)\d{4,5}-\d{4}*$”
  • MaskedEditExtender中
    AutoComplete=“true”AutoCompleteValue=”“
  • codebeahind中:
    txtTelefone.Text.Trim()

这样,所有未填充的字符将被替换为字符串末尾的空格,正则表达式将负责验证,Trim()将删除空格。因此,允许您选择掩码的长度。

MaskedEditExtender
上设置
ClearMaskOnLostFocus=“true”
用户不能在“')和“-”之间放置4或5位数字。看见是的。或者,你的正则表达式更优雅,但我的正则表达式仍然有效,因为用户无论如何只能在文本框中输入最多10个字符。但是谢谢!当我没有完成掩码时,我只需要文本框不会变得无效,掩码中的第一个N需要是可选的尝试将ValidationExpression替换为
ValidationExpression=“^(\(\)\uuuuuuuuuuuuuuu-)\(\d{2})\d{4,5}-\d{4}$”
和扩展代码中的
ClearMaskOnLostFocus=“false”
。来自的想法。这里的问题是面具,而不是验证器。验证器表达式很好,但我需要使掩码的一个数字成为可选的。