.NET正则表达式,用于检查长度和非字母数字字符
我需要Regexp来validation字符串是否具有最小长度6并且它包含至少一个非字母数字字符,例如: "eN%{S$u)"
, "h9YI!>4j"
, "{9YI!;4j"
, "eN%{S$usdf)"
, "dfh9YI!>4j"
, "ghffg{9YI!;4j"
。
这个工作得很好^.*(?=.{6,})(?=.*\d).*$"
但是在字符串不包含任何数字的情况下(例如"eN%{S$u)"
)它无法正常工作。
^(?=.{6})(.*[^0-9a-zA-Z].*)$
我们使用正向前瞻来确保至少有6个字符。 然后我们匹配寻找至少一个非字母数字字符( [^0-9a-zA-Z]
)的模式。 .*
匹配这个非字母数字字符周围的任意数字,但到我们到达这里时,我们已经检查过我们匹配至少6个。
^.*(?=.{6,})(?=.*\d).*$"
是你试过的正则表达式。 以下是一些建议:
marcog的答案非常好,但我会反过来这样做,以便更容易添加更多条件(例如至少有一个数字或其他),并且我会使用惰性量词因为它们更便宜图案:
^(?=.*?[^0-9a-zA-Z]).{6}
因此,如果您要添加上述附加条件,它将是这样的:
^(?=.*?[^0-9a-zA-Z])(?=.*?[0-9]).{6}
如您所见,此模式很容易扩展。 注意,它仅用于检查匹配,其捕获无用。
保持简单。
// long enough and contains something not digit or az x.Length >= 6 && Regex.IsMatch(x, @"[^da-zA-Z]")
快乐的编码。
编辑,纯粹的“正则表达式”:
第一个断言前瞻中有6个字母,然后确保在前瞻中有一些不是字母数字的东西(它会“扔掉”到前5个字符试图匹配) 。
(?=.{6}).{0,5}[^da-zA-Z]
怎么样(固定): ^(?=.{6})(.*[^w].*)$
请查看https://www.ultrapico.com/Expresso.htm这是一个很酷的工具,可以帮助你在Regexps学习中做很多事情。
上述就是C#学习教程:.NET正则表达式,用于检查长度和非字母数字字符分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/949990.html