C# 用于6到32个字母数字字符的正则表达式
我正在寻找具有以下规则的正则表达式:C# 用于6到32个字母数字字符的正则表达式,c#,regex,C#,Regex,我正在寻找具有以下规则的正则表达式: 字母数字,至少包含1个数字和1个字母 允许使用一些特殊字符和西班牙语字符 不应允许有空格 我提出了以下方法,除了防止空间外,其他方法都可以: ^(?=.*\d)(?=.*[a-zA-Z~!@\$\^\-_\+\|\.\?\u005b\u005d\u00e1\u00c1\u00e9\u00c9\u00ed\u00cd\u00f3\u00d3\u00fa\u00da\u00f1\u00d1\u00fc\u00dc\u00bf\u00a1\u2014]).{6,3
^(?=.*\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}$
如何将其修改为标记空间?
任何帮助都将不胜感激。您可以尝试以下方式:
^(?=[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)
,(?=[a
和14])。
。因此,您的正则表达式应该最多允许3个空格字符,一个在初始数字之前,一个在初始数字集之后,一个在末尾。使用负向前看来否定空格字符
示例负前瞻
(?!^.*\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])$
我对regex进行了修改,使其更符合典型的密码验证技术
具体地说,我更改了正面的lookaheads,以便它们以^.*
开头,从而验证整个字符串,而不仅仅是当前位置右侧的任何字符串
我还将它们分开,以便对每一个都进行验证,而不是一个字符类,该类旨在具有多个需求,但可以由单个需求来满足
最后,我将character类中的ASCII更改为以下范围:
-~代码>包含除空格外的所有字母、数字和符号。请参阅关于在一个表达式不能满足所有要求的情况下,不能通过一系列过滤器。即使有一个优雅的解决方案,这似乎允许所有特殊字符。我的印象是你想要特殊字符:)更改-~如果要限制匹配的特殊字符,请在第一个字符类中选择“代码>范围”。