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

nzkunb0c  于 2023-05-08  发布在  其他
关注(0)|答案(3)|浏览(166)

我尝试用regex实现这个规则:“用户输入的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}$)

也许我把它弄得太复杂了,现在我被卡住了。

hof1towb

hof1towb1#

由于您的要求是:

  • 此集中没有字符:``~!@#$%^&*()=+[]{}|;:'",<>/?_ .`
  • 并且长度也不得大于15。

你可以使用一个带{1,15}限定量词的否定字符类:

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

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

详细说明

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

zu0ti5jz2#

在注解中,我们讨论了尝试只搜索有效字符。
[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}\.?

wsewodh2

wsewodh23#

最后,这对我来说很有用:

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>

相关问题