首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >只在中间用可能的破折号来匹配字母数字

只在中间用可能的破折号来匹配字母数字
EN

Stack Overflow用户
提问于 2014-09-22 18:11:24
回答 3查看 1.6K关注 0票数 3

我已经做到了这一点:

代码语言:javascript
复制
^[a-zA-Z0-9]+(?:--?[a-zA-Z0-9]+)*$

但上面的表达式没有限制长度,因为我需要它。我需要的模式只匹配5-6字符总数。所以,它应该是这样的:

代码语言:javascript
复制
safety        (valid)
safet-        (invalid)
s-a-fe        (valid)
-safet        (invalid)
s7-45         (valid)
s--fs         (invalid)

连续连字符无效。引导和尾随连字符无效。整个长度,包括任何连字符,应该是5-6个字符.我试过用ranges ({5,6})替换我的{5,6},但是没有运气。我很感谢你的帮助。

我尝试过的另一条路线是:

代码语言:javascript
复制
^[A-Z0-9][A-Z0-9-]{3,4}[A-Z0-9]$i

这似乎很好,很有效率,但它允许连续连字符。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-09-22 18:15:12

首先使用前瞻性来指定将允许的字符数。

代码语言:javascript
复制
^(?=.{5,6}$)[a-zA-Z0-9]+(?:-[a-zA-Z0-9]+)*$

演示

票数 3
EN

Stack Overflow用户

发布于 2014-09-22 18:16:21

代码语言:javascript
复制
(?!^-)(?!.*?-$)(?!.*?--)^[a-zA-Z0-9-]{5,6}$

尝试this.See演示。

http://regex101.com/r/kM7rT8/15

票数 1
EN

Stack Overflow用户

发布于 2021-11-10 09:12:01

代码语言:javascript
复制
^[a-zA-Z0-9]+([-][a-zA-Z0-9]+)*$
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25980528

复制
相关文章

相似问题

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