正则表达式不适用于C#

Nay*_*yan 0 .net c# regex

我写了一个RegEx for password,它接受最小长度为5,最大长度为30的任何字符.

我试过以下表达式:

(\S){5,30}
Run Code Online (Sandbox Code Playgroud)

但它也接受超过30个字符的密码.如何确保它与此类密码不匹配?

Tim*_*ker 6

您的问题是您的正则表达式还匹配您输入的子字符串.

\S{5}(或(\S){5})匹配12345字符串1234567890.

所以你需要锚定你的正则表达式:

^\S{5,30}$
Run Code Online (Sandbox Code Playgroud)

验证一个5-30个字符的非空白字符串.括号周围\S没用,也没用.

无论如何,你为什么要对密码施加长度限制?为什么你不允许空格字符呢?另请参见.

  • @stema:为什么不呢?他正在使用其中一条评论中提到的`Regex.IsMatch()`.我愿意打赌我今天所获得的所有代表点都缺少锚点是问题所在. (2认同)