4j", "{9YI!;4j", "eN%{S$usdf)", "dfh9Y-6ren">
gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 08:42:15 26 4
gpt4 key购买 nike

我需要正则表达式来验证字符串的最小长度为 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).*$"

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

  • 您不需要在前瞻中匹配超过 6 个字符。此处仅匹配 6 个并不限制正则表达式的其余部分匹配超过 6 个。
  • \d 匹配一个数字,而 (?=.*\\d) 是其中一个的先行。这就是为什么您会遇到您提到的字符串问题,例如 eN%{S$u)
  • 即使上面的观点没有错并且这里的正则表达式是正确的,您也可以将第二个前瞻与 .* 结合起来,只需使用 .*\\d .*.

关于c# - 检查长度和非字母数字字符的 .NET 正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4632786/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com