Нужно найти два повторяющегося символа в строке регуляркой
На вход функции подается строка, нужно написать регулярку, которая обрабатывает эту строку, таким образом, что происходит поиск только числа с плавающей запятой. Если попадается точка или минус больше чем один раз выбрасывать false. Например если на вход идет строка 1.1.1.1 то выкидываем false, а если 1.2 или 5.6 или 3 то тогда возвращаем true
Ответы (2 шт):
Все очень и очень просто: давайте будём проверять регуляркой есть ли такой отрезок в строке, где с начала идёт "." тогда N цифр а тогда еще одна "." или "-" тогда N цифр а тогда еще один "-" тогда строка не валидна.
Также добавил специальные проверки, когда у строки не только цифры, когда идут символы "-." подрят и когда число оканчивается на "." :
function check(str) {
const regexp = /\.[0-9]*\.|\-[0-9]*\-/g;
const regexpIsNumber = /[^-0-9.]/g;
const regexpSpecials = /-\.|\.$/g;
return !regexp.test(str) && !regexpIsNumber.test(str) && !regexpSpecials.test(str);
}
const strings = ["1.1.1.1", "1.2", "5.6", "3", "3a.1", "-2", "-3-4-5", "-.1", "-0.1", "1."];
for (let str of strings) {
console.log(`String ${str} is ${check(str) ? "valid" : "invalid"}`);
}
Попробуйте такое выражение:
^-?\d+(?:[.]\d+|)$ -> Проверка
Если нужно включить .1, -.1, 1. и -1. (валидное представление в JavaScript), то такой вариант:
^-?(?:\.\d+|\d+\.?\d*)$ -> Проверка