请帮助使用正则表达式。我正在验证一个字符串。该值不应仅包含%,如果有%,则长度应超过3个字符,包括%。%可以在字符串中的任何位置(包括点)。
我可以想出这个。只有当%在字符串中时,才应该进行此验证。如果没有%,则不需要验证。
@"^[a-zA-Z0-9'.]*%"; //{3,}$";
谢谢你,纳文
示例:
"%" -失败"%12" -失败"%123"通"%1234"通"12%3"通"abc%"通"abc"通"A"通"ABC"通发布于 2013-09-03 16:01:17
我不认为这需要Regex来解决,只是一些字符串方法是可以的:
var valid = !input.Contains("%") || input.Length > 3;如果您想使用Regex,请看下面的内容:
^([^%]+|.{4,})$发布于 2013-09-03 16:01:29
如果这是验证的范围,那么最好使用Contains("%")和string的Length属性。
return !value.Contains("%") || value.Length > 3;使用单个正则表达式来测试总长度和内部模式都是固有的困难。如果%位于一个固定的位置(从一开始就开始,结束,第2rd字符,等等),它会更适合,但实际上,这不是一个问题,以优雅地解决一个单一的RegEx。
它可以用一个丑陋的RegEx来完成,使用一些外观,但该解决方案不太可能在不同的RegEx实现之间移植(例如,它可能无法与客户端Javascript验证一起工作)。
发布于 2013-09-03 16:17:55
在c#中尝试以下表达式:
@"^((?=(?>.*?[^%]){3,}).*|[^%]+)$"它与您的示例中所描述的相匹配:
"%" -失败"%12" -失败"%123"通"%1234"通"12%3"通"abc%"通"abc"通"A"通"ABC"通在同一个表达式中使用一个非捕获、非原子组,以便在javascript中工作(解决Jay的问题):
@"^((?=(?:.*?[^%]){3,}).*|[^%]+)$"https://stackoverflow.com/questions/18596601
复制相似问题