RegularExpressionValidator不包含任何空格以及以下任何字符`〜!@#%^& *()= + [] {} \ |;:'“,<> /?_具有特定长度

时间:2016-01-07 10:03:42

标签: asp.net regex validation

我正在尝试使用正则表达式实现此规则:“用户输入的asp:textbox中的名称不得包含任何空格以及以下任何字符:”

`~!@#$%^&*()=+[]{}\|;:'",<>/?_ .

长度必须大于15。

我正在使用这样的东西:

<asp:RegularExpressionValidator ID="validateName" runat="server" Text="*" ValidationExpression="(?=^.{1,15}$)(^(([a-zA-Z]|[a-zA-Z][a-zA-Z0-9\-]*[a-zA-Z0-9])\.)*([A-Za-z]|[A-Za-z][A-Za-z0-9\-]*[A-Za-z0-9])$)" ControlToValidate="txtName" Display="Dynamic" SetFocusOnError="true" ValidationGroup="Wizard"> </asp:RegularExpressionValidator>

但是问题是 test12。无效(右)和 test12.test.something 正在传递,这是不对的对于我的问题。 另外我尝试了这个正则表达式没有结果asdasdads.gr传递(不正确):

(?=^[A-Za-z0-9\-]{1,15}$)

也许我太复杂了,现在我卡住了。

3 个答案:

答案 0 :(得分:1)

由于您的要求是:

  
      
  • 此套装中没有字符:`~!@#$%^&*()=+[]{}\|;:'",<>/?_ .
  •   
  • 长度不得超过15。
  •   

您可以使用带有{1,15}限制量词的否定字符类:

ValidationExpression="^[^\][^`~!@#$%^&*()=+{}\\|;:'&quot;,<>/?_\s.]{1,15}$"

regex demo。我们必须转义\符号,我们需要转义]符号(因为它可以被JS引擎使用)。由于\用于指定转义序列,因此也将其转义(使用双斜杠表示一个文字\)。 请注意,如果您在某个HTML属性中使用它,则需要将双引号序列化为&quot;(或使用正则表达式的十六进制表示 - \x22)。

详细解释

  • ^ - 字符串开头
  • [^\][^`~!@#$%^&*()=+{}\\|;:'&quot;,<>/?_\s.]{1,15} - 1到15个字符(由于限制量词{1,15})不在定义的集合中([^...]否定字符类)。如果您打算允许空字符串,请使用{0,15}量词。
  • $ - 字符串结尾

答案 1 :(得分:0)

在评论中我们讨论过只尝试搜索有效字符。

[A-Za-z0-9\-]{1,15}

如果您需要“test12”,这应该适用于“test12”。只需在那里添加句号。另外\ d是数字而不是0-9

[A-Za-z\d\-\.]{1,15}

如果你想让它在最后有一个可选的顶部,请使用以下正则表达式。的?表示0或1。

[A-Za-z\d\-]{1,15}\.?

Example Here

答案 2 :(得分:-1)

最终这对我有用:

ValidationExpression="^[^\][^`~!@#$%^&*()=+{}\\|;:'\x22,<>/?_\s.]{1,15}$"

完整代码:

<asp:TextBox ID="txtHostname" runat="server" CssClass="NormalTextBox" Text=""></asp:TextBox>
<asp:RequiredFieldValidator ID="HostnameValidator" runat="server" Text="*" Display="Dynamic"
             ControlToValidate="txtHostname" meta:resourcekey="HostnameValidator" SetFocusOnError="true"
             ValidationGroup="VpsWizard">
         *
</asp:RequiredFieldValidator>
<asp:RegularExpressionValidator ID="valCorrectHostname" runat="server" Text="*" meta:resourcekey="valCorrectHostname"
             ValidationExpression="^[^\][^`~!@#$%^&*()=+{}\\|;:'\x22,<>/?_\s.]{1,15}$"
             ControlToValidate="txtHostname" Display="Dynamic" SetFocusOnError="true" ValidationGroup="VpsWizard">
</asp:RegularExpressionValidator>