首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >帐号的计算,只接受号码和连字符。

帐号的计算,只接受号码和连字符。
EN

Stack Overflow用户
提问于 2017-10-04 03:20:23
回答 3查看 246关注 0票数 0

帐号应以数字开头,以数字结尾。在数字中,连字符被接受。注意连字符不应重复(-,-等等)。现在我可以验证示例1-4,如何处理5-6个案例?

代码语言:javascript
复制
^[0-9][0-9\-]*[0-9]$

,例如

  1. 324324-324324-23432是真的
  2. -2342343-2432-3214324是假的
  3. 324324-324324-是假的
  4. 3 4324-324-324为假
  5. 324324-324324-是假的
  6. 324324-3243-24是假的
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-10-04 03:23:08

您可以使用负面的前瞻性断言。

代码语言:javascript
复制
^[0-9](?:[0-9]|-(?!-))*[0-9]$

(?:)是一个非捕获组.在它中,我们要么接受一个数字,要么我们接受-(?!-),这意味着连字符后面没有另一个连字符。

请注意,并非所有regex引擎都支持前瞻性断言,但大多数支持。

如果使用的引擎不支持负前瞻性断言,也可以使用一个正则表达式,该表达式指定每个连字符后面必须有一个数字。

代码语言:javascript
复制
^[0-9](?:-?[0-9])*$

在匹配内容上,这一次确实与前一次有一个不同,即这一次将接受一位数(例如3)作为输入,而另一位则至少需要两位数。

票数 0
EN

Stack Overflow用户

发布于 2017-10-04 11:25:50

代码语言:javascript
复制
^\d?(?:\d{1,}\-{1})*\d+$/

你也可以用这个。

票数 0
EN

Stack Overflow用户

发布于 2017-10-04 03:37:37

代码语言:javascript
复制
var input = `
324324-324324-23432
324324-324324-23432-11111
-2342343-2432-3214324
324324-324324-
3dsfsdf4324-324-324
324324--324324-
324324--3243-24
`;

console.log( input.match(/^[0-9]{5,}-[0-9]{5,}-[0-9]{5,}$/gm) )

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46556487

复制
相关文章

相似问题

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