Javascript 如何使用正则表达式忽略第一个期间并匹配所有后续期间?

Javascript 如何使用正则表达式忽略第一个期间并匹配所有后续期间?,javascript,regex,number-formatting,Javascript,Regex,Number Formatting,如何使用正则表达式忽略第一个期间并匹配所有后续期间 例如: 1.23(不匹配) 1.23.45(与第二阶段相匹配) 1.23.45.56(与第二和第三阶段相匹配) 我试图限制用户输入无效数字。因此,我将使用这个正则表达式用空字符串替换匹配项 我目前有/[^.0-9]+/,但不允许在(可选)首字母后禁用,限制起始^和结束定位$之间的数字,然后指定所需的数字模式。例如: /^\d+\.?\d+?$/ 它允许一个或多个数字,后跟一个可选的句点,然后是可选的数字。我建议使用一个正则表达式,它将匹配1

如何使用正则表达式忽略第一个期间并匹配所有后续期间

例如:

  • 1.23(不匹配)
  • 1.23.45(与第二阶段相匹配)
  • 1.23.45.56(与第二和第三阶段相匹配)
我试图限制用户输入无效数字。因此,我将使用这个正则表达式用空字符串替换匹配项


我目前有
/[^.0-9]+/
,但不允许在(可选)首字母

后禁用
,限制起始
^
和结束定位
$
之间的数字,然后指定所需的数字模式。例如:

/^\d+\.?\d+?$/


它允许一个或多个数字,后跟一个可选的句点,然后是可选的数字。

我建议使用一个正则表达式,它将匹配1+个数字、一个句点,然后是任意数量的数字和句点,将这两个部分捕获到单独的组中。然后,在replace回调方法中,使用附加的
replace
删除所有句点:

var ss=['1.23','1.23.45','1.23.45.56'];
变量rx=/^(\d+\)([\d.]*)$/;
用于(ss的var s){
var res=s.replace(rx,函数($0,$1,$2){
返回$1+2。替换(/\./g,”);
});
console.log,“=>”,res;

}
您使用的是哪种风格的正则表达式/语言?将它添加为标记。您不需要转义
/[^.0-9]+/
中的
,因此它应该是
/[^\.0-9]+/
。replace(/^(\d+\)([\d.]*)$/,函数($0,$1,$2){返回$1+$2。replace(/\./g,,);})
。也许第一个点应该用
@WiktorStribiżew设置为可选,谢谢!这解决了这个问题,得到了我想要的行为!如果不选择第一个句号,现在会有什么效果呢?好的,我现在就发布一个答案。这可以匹配我最终想要的数字。但我希望能够匹配非数字和非第一个句点,以便用空字符串替换它们谢谢。这正是我需要的!我意识到,如果数字有一个前导“.”,则此模式不会捕获额外的“.”。例如:.9422…123将是allowed@Itsai:因此,问题是数字可能以
开头?只需将第一个
+
替换为
*
,以匹配0个或多个事件:
var rx=/^(\d*\)([\d.]*)$/。它解决了问题吗?(只是有机会尝试一下。)将第一个
+
替换为
*
并没有解决问题。您是正确的,我的示例中的一个数字可以从
开始。当前模式允许输入多个
,只要我们以
@Itsai开头:如果您需要从
.9422…123
中获取
.9422123
,以上建议。