Regex匹配任何js编号



因此,作为一个练习,我想匹配任何JS编号。这是我能想到的:

/^(-?)(0|([1-9]d*?|0)(.d+)?)$/

然而,这与带有下划线分隔符(1_2.3_4(的新语法不匹配。我尝试了几件事,但都没能想出有效的办法。如何在一个正则表达式中表达所有JS数字?

对于问题中的格式,您可以使用:

^-?d+(?:_d+)*(?:.d+(?:_d+)*)?$

请参阅regex演示。

或者只允许一个前导零:

^-?(?:0|[1-9]d*)(?:_d+)*(?:.d+(?:_d+)*)?$

模式匹配:

  • ^字符串开始
  • -?匹配可选的-
  • (?:0|[1-9]d*)匹配0或1-9和可选数字
  • (?:_d+)*可选地重复匹配_和1+位数字
  • (?:非捕获组
    • .d+(?:_d+)*匹配.和1+数字,并可选地重复匹配_和1+位数
  • )?关闭非捕获组
  • $字符串末尾

请参阅另一个regex演示。

这个怎么样?

^(-?)(0|([1-9]*?(_)?(d)|0|)(.d+)?(_)?(d))$

最新更新