如何使用 RegEx 忽略第一个句点并匹配所有后续句点?

How to use RegEx to ignore the first period and match all subsequent periods?

如何使用 RegEx 忽略第一个句点并匹配所有后续句点?

例如:

我正在尝试限制用户输入无效号码。所以我将使用这个 RegEx 来替换空字符串的匹配项。

我目前有 /[^.0-9]+/,但在(可选的)初始 .

之后禁止 . 是不够的

限制开始 ^ 和结束锚点 $ 之间的数字,然后指定您需要的数字模式。如:

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

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

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

的句点

var ss = ['1.23', '1.23.45', '1.23.45.56'];
var rx  = /^(\d+\.)([\d.]*)$/;
for (var s of ss) {
  var res = s.replace(rx, function([=10=],,) { 
     return +.replace(/\./g, ''); 
  });
  console.log(s, "=>", res);
}

图案详情:

  • ^ - 字符串开头
  • (\d+\.) - 第 1 组匹配 1+ 个数字和文字 .
  • ([\d.]*) - 除数字和文字点之外的零个或多个字符
  • $ - 字符串结尾。