Csharp/C#教程:.NET正则表达式,用于检查长度和非字母数字字符分享


.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

(0)
上一篇 2021年11月18日
下一篇 2021年11月18日

精彩推荐