我需要为.aspx程序形成一个正则表达式(reg ex),该程序验证一个字符后跟可选字符。
第一个字符更严格,不允许连字符或空格。
我有
^[A-Za-z0-9][A-Za-z0-9 -]{1,9}
有效,但必须至少有两个字符(限制总共为9个字符)。
.net代码如下:
controltovalidate="txt1" validationexpression="^[A-Za-z0-9][A-Za-z0-9 -]{1,9}"></ASP:REGULAREXPRESSIONVALIDATOR>
[自问这个问题以来,我发现只需将{1,9}更改为{0,9}即可完成我的需要,但我保留的问题可能对其他人有用,尤其是下面的答案] < / p>
我读了那个
^[A-Za-z0-9]([A-Za-z0-9 -])?{1,9}
可能会起作用,因为我在第一次使用parens并使用“?”后对字符进行分组。作为选择。
但是,在将此代码移至生产之前,我确实需要知道这是否是正确的语法。
此外,它失败了在线注册表达式验证器。
有谁知道这是否适用于aspx reg表达式验证器?
答案 0 :(得分:1)
请尝试以下操作:/^[A-Za-z0-9](?:[A-Za-z0-9 -]){1,8}$/
工作演示@ regex101
在您的模式^[A-Za-z0-9]([A-Za-z0-9 -])?{1,9}
中,贪婪量词又名{n,m}
前面是贪婪量词又名?
,其中没有一个是可量化的标记,因此在另一个量词标记前面加上量词标记是不正确的。
为了实现您的目标,您必须让第二个可接受的字符范围仅允许 1 到 8 外观:(?:[A-Za-z0-9 -]){1,8}