帐号的正则是,仅接受数字和连字符

  • 本文关键字:数字 连字符 帐号 regex
  • 更新时间 :
  • 英文 :


帐户号应以一个数字开始,并以一个数字结束。在数字中,连字符被接受。指出连字符不应重复( - - - 等)。现在我可以验证示例1-4,如何处理案例5-6?

^[0-9][0-9-]*[0-9]$


例如

1。324324-324324-23432是True

2。-2342343-2432-3214324是false

3。324324-324324-是false

4。3DSFSDF4324-324-324是false

5。324324--324324-是false

6。324324--3243-24是false

您可以使用负面的lookahead断言。

^[0-9](?:[0-9]|-(?!-))*[0-9]$

(?:)是一个非捕获组。在其中,我们接受数字,或者我们接受-(?!-),这意味着连字符不遵循另一个连字符。

请注意,并非所有的正则发动机都支持lookahead断言,但大多数都这样做。


如果您使用的是不支持负LookAhead断言的引擎,也可以通过使用指定每个连字符的正则表达式来执行此操作。

^[0-9](?:-?[0-9])*$

这个与以前的匹配的差异确实有一个差异,这是一个数字(例如3)作为输入,但另一个至少需要两个数字。

^d?(?:d{1,}-{1})*d+$/

您也可以使用它。

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) )

相关内容

最新更新