如何使用正则表达式检查字符串是否包含3个或更多小数点。 我只想使用正则表达式来解决这个问题。
var string1 = "1.23432 12.123.1231"; // true
var string2 = "1.23432 12123.1231"; // false
我认为会起作用但不会:
let regx2 = RegExp(/.{3,}/g);
if(regx2.test(string1)){
output = false;
}
非常感谢任何帮助。
答案 0 :(得分:1)
另一种方法是使用函数match
:
此方法仅计算点数,与当前格式无关。
此正则表达式/(\.)/g
捕获所需的组。
console.log(("1.23432 12.123.1231".match(/(\.)/g) || []).length >= 3);
console.log(("1.23432 12123.1231".match(/(\.)/g) || []).length >= 3);

答案 1 :(得分:1)
将字符串与常规字符串匹配时,可以使用match
检索匹配项。
function hasMoreThan3OrMore(s) {
return s.match(/\./g).length >= 3;
}
var string1 = "1.23432 12.123.1231"; // true
var string2 = "1.23432 12123.1231"; // false
console.log(hasMoreThan3OrMore(string1));
console.log(hasMoreThan3OrMore(string2));
答案 2 :(得分:1)
使用正则表达式的另一种方法是使用String.split()
并检查长度,如下所示:
console.log("1.23432 12.123.1231".split(".").length > 3); // true
console.log("1.23432 12123.1231".split(".").length > 3); // false

答案 3 :(得分:0)
您可以删除所有非.
个字符,然后检查长度
let strs = [
"11.11 1.111.11.1111",
"1.1.1"
]
for (let s of strs) {
console.log(s.replace(/[^\.]/g, '').length >= 3)
}
答案 4 :(得分:0)
RegExp.test()
返回一个布尔值,所以你可以简单地返回它。修正你的拼写错误也可以解决你的错误:
var string1 = "1.23432 12.123.1231"; // true
var string2 = "1.23432 12123.1231"; // false
let regx2 = RegExp(/.{3,}/g);
console.log(regx2.test(string1); // true
console.log(regx2.test(string2); // false
答案 5 :(得分:0)
我正在寻找的正则表达式是
let regx2 = RegExp(/^(.*\.){3,}\d+$/g);
if(regx2.test(string2)){
console.log('testing 3 or more . :', string1);
output = false;
}
我正在努力改善我使用正则表达式的知识,因此正在寻找一种只使用正则表达式而不使用方法的答案。感谢您的所有帮助,我实际上甚至没有考虑检查字符串是否包含小数,然后检查它返回的次数。