因此,作为一个练习,我想匹配任何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))$