Regex 用于匹配带或不带前导零的小数的正则表达式
我不太懂正则表达式。Regex 用于匹配带或不带前导零的小数的正则表达式,regex,Regex,我不太懂正则表达式。 上面的正则表达式不允许输入。2.但它允许所有其他小数,如0.2、0.02等。我需要让这个表达式允许像.2、.06等这样的数字……只需将[0]之后的+更改为ansterisk`*': 因此,与其在点之前允许一个或多个零,不如允许0或多个。我喜欢这个用于浮点数的regexp,它非常聪明,因为它不会将0.0作为一个数字匹配。它要求周期两边至少有一个非零数字。我想我可以将它分成几个部分来提供更深入的理解它的g ^([0-9]*[1-9][0-9]*(\.[0-9]+)?|[0]*\
上面的正则表达式不允许输入。2.但它允许所有其他小数,如0.2、0.02等。我需要让这个表达式允许像.2、.06等这样的数字……只需将
[0]
之后的+
更改为ansterisk`*':
因此,与其在点之前允许一个或多个零,不如允许0或多个。我喜欢这个用于浮点数的regexp,它非常聪明,因为它不会将
0.0
作为一个数字匹配。它要求周期两边至少有一个非零数字。我想我可以将它分成几个部分来提供更深入的理解它的g
^([0-9]*[1-9][0-9]*(\.[0-9]+)?|[0]*\.[0-9]*[1-9][0-9]*)$
regexp内部有两个较小的模式,第一个模式匹配数字>=1的情况(至少有一个非零字符)。可选地,允许一个或多个尾随数字的周期。第二个模式匹配我将使用此模式:
/^(\d*[1-9]\d*(\.\d+)?|0*\.\d*[1-9]\d*)$/
这允许数字表达式以任意一个开头
- 某些数字,后跟可选的小数位数,或
- 只有小数位数
^(?:(?:0|[1-9][0-9]*)(?:\.[0-9]*)?|\.[0-9]+)$
但不是:
123
123.
123.45
.12345
替换为:
.
01234
甚至更短:
^([0-9]*[1-9][0-9]*(\.[0-9]+)?|[0]*\.[0-9]*[1-9][0-9]*)$
您也可以使用以下简单表达式:
^(\d*[1-9]\d*(\.\d+)?|[0]*\.\d*[1-9]\d*)$
刚刚计划发布:)^([0-9]*[1-9][0-9]*(\.[0-9]+)?[0]*\.[0-9]*[1-9][0-9]*)$这是最相关的。谢谢@Joey的解释。顺便说一句:为了避免前导零,删除第一个[0-9]*提供的原始regexp也不允许任何等于0的内容…您的丢失了它
^([0-9]*[1-9][0-9]*(\.[0-9]+)?|[0]*\.[0-9]*[1-9][0-9]*)$
^(\d*[1-9]\d*(\.\d+)?|[0]*\.\d*[1-9]\d*)$
^[-+]?\d*(\.\d+)?$