如何使用 RegEx 忽略第一个句点并匹配所有后续句点?
How to use RegEx to ignore the first period and match all subsequent periods?
如何使用 RegEx 忽略第一个句点并匹配所有后续句点?
例如:
- 1.23(不匹配)
- 1.23.45(匹配第二期)
- 1.23.45.56(匹配第二期和第三期)
我正在尝试限制用户输入无效号码。所以我将使用这个 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.]*)
- 除数字和文字点之外的零个或多个字符
$
- 字符串结尾。
如何使用 RegEx 忽略第一个句点并匹配所有后续句点?
例如:
- 1.23(不匹配)
- 1.23.45(匹配第二期)
- 1.23.45.56(匹配第二期和第三期)
我正在尝试限制用户输入无效号码。所以我将使用这个 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.]*)
- 除数字和文字点之外的零个或多个字符$
- 字符串结尾。