正则表达式为6到32个字母数字字符

时间:2014-01-14 05:21:50

标签: c# regex

我正在寻找具有以下规则的正则表达式:

  1. 字母数字至少包含1个数字和1个字母
  2. 允许使用一些特殊和西班牙语字符。
  3. 不应允许空格
  4. 我已经提出了以下内容,除了防止空格之外,它还可以做任何事情:

    ^(?=.*\d)(?=.*[a-zA-Z~!@\$\^\-_\+\|\.\?\u005b\u005d\u00e1\u00c1\u00e9\u00c9\u00ed\u00cd\u00f3\u00d3\u00fa\u00da\u00f1\u00d1\u00fc\u00dc\u00bf\u00a1\u2014]).{6,32}$
    

    如何修改标记空格? 任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:0)

你可以尝试这样的事情:

^(?=[A-Za-z0-9])(?=[a-zA-Z~!@\$\^-_+\|.\?\u005b\u005d\u00e1\u00c1\u00e9\u00c9\u00ed\u00cd\u00f3\u00d3\u00fa\u00da\u00f1\u00d1\u00fc\u00dc\u00bf\u00a1\u2014]){6,32}$

在您当前的正则表达式中,您似乎有一个外卡匹配器(.),它应匹配您不想匹配的空间。通配符运算符显示在3个位置^(?=.\d)(?=.[a14]).。因此,你的正则表达式应该允许最多3个空白字符,一个在初始数字之前,在最初的数字集之后,最后一个。

答案 1 :(得分:0)

使用否定前瞻来否定空格字符。


负前瞻示例

(?!^.*\s)

完整正则表达式

^.*(?![^!-~\u005b\u005d\u00e1\u00c1\u00e9\u00c9\u00ed\u00cd\u00f3\u00d3\u00fa\u00da\u00f1\u00d1\u00fc\u00dc\u00bf\u00a1\u2014])(?!^.*\s)(?=^.*\d)(?=^.*[a-zA-Z]).*$

我对正则表达式进行了修改,因此它更符合典型的密码验证技术。

具体来说,我改变了你的正向前瞻,以便他们以^.*开头,这样他们就可以验证整个字符串,而不仅仅是当前位置右边的字符串。

我也将它们分开,以便每一个都经过验证,而不是单个字符类,它可以满足多个要求,但可以通过单个字符来满足。

作为最后一点,我将字符类中的ASCII更改为以下范围:!-~,其中包含除空格外的所有字母,数字和符号。