.NET 正则表达式检查长度和非字母数字字符

2024-02-27

我需要 Regexp 来验证字符串的最小长度为 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]). The .*匹配这个非字母数字字符周围的任意数量的任何字符,但是当我们到达这里时,我们已经检查了我们是否匹配至少 6 个。

^.*(?=.{6,})(?=.*\\d).*$"

是你尝试过的正则表达式。以下是一些建议:

  • 您不需要在前瞻中匹配超过 6 个字符。此处仅匹配 6 个并不限制正则表达式的其余部分匹配超过 6 个。
  • \d匹配一个数字,并且(?=.*\\d)是其中之一的前瞻。这就是为什么您遇到您提到的字符串问题的原因,例如eN%{S$u).
  • 即使上面的观点没有错误并且这里的正则表达式是正确的,您也可以将第二个前瞻与.*接下来只需使用.*\\d.*.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

.NET 正则表达式检查长度和非字母数字字符 的相关文章

随机推荐