Regex 帐号的正则表达式,仅接受数字和连字符

Regex 帐号的正则表达式,仅接受数字和连字符,regex,Regex,帐号应以数字开头,以数字结尾。在数字中,接受连字符。注意连字符不应重复-、-等。 现在我可以验证示例1-4,如何处理案例5-6 ^[0-9][0-9\-]*[0-9]$ 比如说 一,。324-324-23432是真的 二,-2342343-2432-3214324为假 三,。324-324-为假 四,。3dsfsdf4324-324-324为假 五,。324-324-为假 六,。324-3243-24为FALSE您可以使用否定的前瞻断言 ^[0-9](?:[0-9]|-(?!-))*[0-9

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

^[0-9][0-9\-]*[0-9]$
比如说

一,。324-324-23432是真的

二,-2342343-2432-3214324为假

三,。324-324-为假

四,。3dsfsdf4324-324-324为假

五,。324-324-为假


六,。324-3243-24为FALSE

您可以使用否定的前瞻断言

^[0-9](?:[0-9]|-(?!-))*[0-9]$
是一个非捕获组。其中我们接受一个数字,或者我们接受-?!-,这意味着一个连字符后面没有另一个连字符

注意,并非所有正则表达式引擎都支持前瞻断言,但大多数都支持

如果您使用的引擎不支持负前瞻断言,那么还可以通过使用正则表达式来实现这一点,该正则表达式指定每个连字符后面必须跟一个数字

^[0-9](?:-?[0-9])*$
这一个与前一个在匹配方面有一个区别,即这一个接受一个数字,例如3作为输入,但另一个至少需要两个数字。

变量输入=` 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 你也可以用这个

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