首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >字符串长度限制,至少包含1位、0个或更多字符,可选短划线

问字符串长度限制,至少包含1位、0个或更多字符,可选短划线
EN

Stack Overflow用户
提问于 2013-10-03 21:31:03
回答 3查看 938关注 0票数 1

我正在尝试为消费产品模型创建一个正则表达式。

我有一个正则表达式:([a-z]*-?[0-9]+-?[a-z]*-?){4,}

我希望将整个特殊字符串限制为4或更多,但实际情况是,该限制仅应用于数字。

你能告诉我我做错了什么吗,或者我如何才能限制整个特殊字符串,而不仅仅是数字?

限制:

1-字符串至少包含1位数字

2-字符串可以包含字符

3-字符串可以包含"-“

4-最小长度=4

EN

回答 3

Stack Overflow用户

发布于 2013-10-03 22:23:34

到目前为止你的情况总结:

  1. 需要至少1个数字0-9
  2. 需要至少4个符号{4,}
  3. 可以包含字符a-zA-Z
  4. 可以包含短破折号-

下面的regexp可以满足所有这些要求:

代码语言:javascript
复制
^(?=.*\d)([A-Za-z0-9-]+){4,}$

注意::^和$符号表示验证了整个输入字符串。如果不是这样的话就改变这一点。

票数 1
EN

Stack Overflow用户

发布于 2013-10-03 21:34:11

它不能匹配...EM24A1BF包含EM,它是2a-z,而不是您的正则表达式所说的1。像这样的东西

代码语言:javascript
复制
[a-z]*-?\d+-?[a-z]*-?\d*[a-z]+

匹配您的表达式和所有这些内容:

  • eM-24A1BF

eM24A-1BF

  • eM-24A1BF

  • E1912H
  • EM24A1BF
  • eM-24A-
  • eM24A-1BF 24A

为了确保字符串同时满足您的要求(字符的位置和组成以及长度要求),需要使用non-consuming regular expression

票数 0
EN

Stack Overflow用户

发布于 2013-10-09 22:35:43

看看这个

代码语言:javascript
复制
 ([\w-]*\d+[\w-]*){4,}

它与以下内容匹配

代码语言:javascript
复制
32ES5200G
LE32K900
N55XT770XWAU3D
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19160570

复制
相关文章

相似问题

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