数字和短划线的正则表达式

hun*_*eox 11 javascript regex

目前我写这样的正则表达式: /^([\d+]*-)+([\d]*-)+([\d])*$/

我希望结果遵循这种模式00-123-456-78900123456789(在数字组之间划线或根本没有划线)

  • 00-123--457-789
  • 要么 -00-123-456-789-
  • 要么 -00123456789-
  • 要么 00-123-456-789-

如何修改正则表达式以匹配上面的模式?

jfr*_*d00 15

如果您的问题需要在示例中指定的特定段长度,则可以使用:

/^\d{2}-?\d{3}-?\d{3}-?\d{3}$/
Run Code Online (Sandbox Code Playgroud)

这将接受00-123-456-789,但将允许任何破折号丢失.如果您只想允许所有破折号或没有破折号,那么您可以使用:

/^\d{2}-\d{3}-\d{3}-\d{3}$|^\d{11}$/
Run Code Online (Sandbox Code Playgroud)

它只接受00-123-456-78900123456789但不允许只丢失一些破折号.

或者,如果您的意思是它们之间可以有任意数量的数字和任意数量的单个破折号,那么您可以使用:

/^\d+(-\d+)*$/
Run Code Online (Sandbox Code Playgroud)


Phi*_*hil 14

尝试这样的事情

/^(\d+-?)+\d+$/
Run Code Online (Sandbox Code Playgroud)

  • 这允许任意长度的任意数字序列,因此允许使用类似"999999999-99999999999-999999999999999999-0000-0000-000000-000000-0-0000"的数字.OP的问题似乎是一个更具体的2位数字模式,然后是3位数,然后是3位数,然后是3位数. (4认同)
  • @jfriend00 OP的正则表达式尝试似乎表明长度不是解决方案的一部分(尽管我可能是错的).从尝试来看,似乎他们只想匹配一个数字,然后是数字 - 破折号组合(多个数字,只有一个破折号)并以数字结尾.此外,他们表示这个答案是正确的;) (3认同)