Ext.net C# testfiled 正则表达式验证

Ext.net C# testfiled regex validation

正在进行 Ext.net 项目。我需要在密码字段上设置验证,以防止密码前或密码后有空白 spaces,并且密码长度不应超过 15 个字符,包括空白 spaces。到目前为止,我已经完成了以下操作,但没有用。

问题是文本之间的 space 被视为无效。 例如。它不允许"Pass word",我想不允许“密码”或"password "。

<ext:TextField ID="txtConfirmPwd" AllowBlank="false" InputType="Password" Name="txtConfirmPwd" runat="server" StyleSpec="width:96%;" Regex="^[^\s.^\s]{1,15}$" InvalidClass="invalidClass" Validator="ComparePwd" IDMode="Static">
<Listeners>
    <Valid Handler="InvalidClass(this,true);" />
    <Invalid Handler="InvalidClass(this,false);" />
</Listeners>
</ext:TextField>

您可以使用

Regex="^\S(?:.{0,13}\S)?$"

详情:

  • ^ - 字符串开头
  • \S - 非空白
  • (?:.{0,13}\S)? - 1 或 0 个序列:
    • .{0,13} - 任何零到十三个字符
    • \S - 非空白符号
  • $ - 字符串结尾。

这意味着,第一个字符必须是非空白字符,然后最多可以有 14 个字符,最后一个字符是非空白字符。

您实际上可以使用前瞻来实现相同的目的,^(?!\s)(?!.*\s$).{1,15}$(?!\s) 是一个否定前瞻,如果第一个(因为模式紧跟在 ^ 之后)字符是一个空白字符,则匹配失败,如果空白出现在 (?!.*\s$) 则匹配失败字符串的结尾。但是,对于当前任务来说,它不必要地复杂。