2017-09-14 81 views
1

使用Ext.net项目。我需要设置密码验证字段,以便在密码之前或密码之后不允许空格,并且密码的长度不应超过15个字符(包括空格)。到目前为止,我做了以下工作,但不起作用。Ext.net C#testfiled正则表达式验证

问题是它将文本之间的空间计为无效。 例如它不允许“密码”,我不想让“密码”或“密码”。

<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> 
+1

尝试'Regex =“^ \ S(?:。{0,13} \ S)?$”' –

+0

工作。请在答案部分发帖,以便我可以接受....谢谢。 – Maharshi

+0

@Maharashi我发表了一个解释答案。 –

回答

1

您可以使用

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

详情:

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

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

您可能实际上使用lookahead来达到相同的效果,^(?!\s)(?!.*\s$).{1,15}$(?!\s)是一个负向前视,如果第一个(如^后面的模式)char是空白字符,并且(?!.*\s$)匹配失败(如果空白字符出现在字符串的末尾),则匹配失败。但是,对于当前的任务来说这是不必要的复杂。