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

时间:2017-06-14 16:46:32

标签: javascript regex number-formatting

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

例如:

  • 1.23(不匹配)
  • 1.23.45(与第二期相匹配)
  • 1.23.45.56(匹配第二和第三期)

我试图限制用户输入无效数字。所以我将使用这个RegEx替换空字符串匹配。

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

之后禁止.是不够的

2 个答案:

答案 0 :(得分:2)

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

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

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

答案 1 :(得分: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($0,$1,$2) { 
     return $1+$2.replace(/\./g, ''); 
  });
  console.log(s, "=>", res);
}

模式详情

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