Регулярное выражение для принятия как положительных, так и отрицательных чисел - PullRequest
1 голос
/ 24 сентября 2019

Мне нужно регулярное выражение, которое помогает мне принимать как положительные, так и отрицательные числа

Я использовал ^-?\d*(.\d+)?$ выражение

validateNegativeNumber(e: any) {
   let input = String.fromCharCode(e.charCode);
        const reg = /^-?\d*(.\d+)?$/;
        if (!reg.test(input)) {
            e.preventDefault();
        }
    }

Expected result: 5, +5, -5, 0
Unexpected results: 1.5, -1.5, 5++++, ++5, ---5, 5--, 50--6

Ответы [ 5 ]

1 голос
/ 24 сентября 2019

Вы можете использовать атрибут pattern тега input в HTML, как показано ниже:

<input pattern="^[+-]?\d+$">

Объяснение: атрибут pattern доступен, его лучше использовать, чем вызывать функцию, котораяпроверяет ввод.Это будет дополнительная работа.

Надеюсь, это поможет.

1 голос
/ 24 сентября 2019

Вы пропустили проверку на + знак.Также нет необходимости в захвате групп.

Используйте это:

^[+-]?\d+$

  1. Необязательный знак + или - в начале
  2. После одной или нескольких цифр до конца

Демо

0 голосов
/ 24 сентября 2019

^[+-]?\d+(?:\.\d+)?$

Объяснение:

^ соответствует началу строки (поэтому «abc212» не будет проверяться)

[+-]? первый разрешенныйchar che be + o - совпадение 0 или 1 вхождение (?).Обратите внимание, что если вам не нужен знак +, вы можете просто написать -?, чтобы регулярное выражение проверяло совпадение 0 или 1 вхождения - в качестве первого символа

\d+ после этогоу вас может быть любое количество цифр (по крайней мере одна, потому что мы используем +)

(?:\.\d+)?, в конце мы можем иметь 0 или 1 вхождение (заданное ?) точки(\.), за которым следует любое количество цифр (\d+).Обратите внимание, что ?: в начале группы говорит, что это «группа без захвата»)

$ соответствует концу строки (поэтому «231aaa» не будет проверяться)

0 голосов
/ 24 сентября 2019

Используйте это для принятия положительного или отрицательного числа.

^-?[0-9]\d*(\.\d+)?$
0 голосов
/ 24 сентября 2019

Как насчет этого?

const reg = /^[+-]?\d*(\.\d+)?$/;

const valids = ['+5', '-5', '5', '-5', '-0.6', '.55', '555.124'];

const invalids = ['--5', '5+', '5-'];


console.log('testing for valids array');

valids.forEach(valid => {
  console.log(reg.test(valid));
});

console.log('testing for invalids array');

invalids.forEach(invalid => {
  console.log(reg.test(invalid));
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...