正则表达式:搜索密钥验证

Nav*_*thy 1 c# regex

请帮助正则表达式.我正在验证一个字符串.该值不应仅包含%,如果有%,则长度应超过3个字符,包括%.%可以是字符串中的任何位置(包含点).

我能想出来.只有%在字符串中时才会发生此验证.如果没有%,则无需验证.

@"^[a-zA-Z0-9'.]*%"; //{3,}$";

谢谢,Naveen

例子:

  • "%" - 失败
  • "%12" - 失败
  • "%123" - 通过
  • "%1234" - 通过
  • "12%3" - 通过
  • "abc%" - 通过
  • "abc" - 通过
  • "A" - 通过
  • "ABC" - 通过

Jay*_*Jay 6

如果这是您的验证范围,您最好使用Contains("%")Length属性string.

return !value.Contains("%") || value.Length > 3;
Run Code Online (Sandbox Code Playgroud)

它与一个正则表达式来测试本来就很难总长度和用于内的图案.如果%它们处于固定位置(开始,结束,从开始的第2个字符等),它将更适合,但是原样,这不是一个用单个RegEx 优雅地解决的问题.

它可以使用丑陋的RegEx来完成,使用一些外观,但该解决方案不可能在不同的RegEx实现中移植(例如,它可能不适用于客户端Javascript验证).