如何使用RegEx忽略第一个句点并匹配所有后续句点?
例如:
我试图限制用户输入无效数字。所以我将使用这个RegEx替换空字符串匹配。
我目前有/[^.0-9]+/
,但在(可选)初始.
.
是不够的
答案 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.]*)
- 除数字和文字点以外的零个或多个字符$
- 字符串结束。