首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >正则表达式:搜索键验证

正则表达式:搜索键验证
EN

Stack Overflow用户
提问于 2013-09-03 15:56:17
回答 4查看 131关注 0票数 1

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

我可以想出这个。只有当%在字符串中时,才应该进行此验证。如果没有%,则不需要验证。

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

谢谢你,纳文

示例:

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

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-09-03 16:01:17

我不认为这需要Regex来解决,只是一些字符串方法是可以的:

代码语言:javascript
复制
var valid = !input.Contains("%") || input.Length > 3;

如果您想使用Regex,请看下面的内容:

代码语言:javascript
复制
^([^%]+|.{4,})$
票数 3
EN

Stack Overflow用户

发布于 2013-09-03 16:01:29

如果这是验证的范围,那么最好使用Contains("%")stringLength属性。

代码语言:javascript
复制
return !value.Contains("%") || value.Length > 3;

使用单个正则表达式来测试总长度和内部模式都是固有的困难。如果%位于一个固定的位置(从一开始就开始,结束,第2rd字符,等等),它会更适合,但实际上,这不是一个问题,以优雅地解决一个单一的RegEx。

它可以用一个丑陋的RegEx来完成,使用一些外观,但该解决方案不太可能在不同的RegEx实现之间移植(例如,它可能无法与客户端Javascript验证一起工作)。

票数 6
EN

Stack Overflow用户

发布于 2013-09-03 16:17:55

在c#中尝试以下表达式:

代码语言:javascript
复制
@"^((?=(?>.*?[^%]){3,}).*|[^%]+)$"

它与您的示例中所描述的相匹配:

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

在同一个表达式中使用一个非捕获、非原子组,以便在javascript中工作(解决Jay的问题):

代码语言:javascript
复制
@"^((?=(?:.*?[^%]){3,}).*|[^%]+)$"
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18596601

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档