Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Регулярное выражение (проценты) (https://javascript.ru/forum/misc/74716-regulyarnoe-vyrazhenie-procenty.html)

tai 02.08.2018 16:11

Регулярное выражение (проценты)
 
Добрый день!
Подскажите регулярное выражение для проверки процентных значений (10%, 100%, 23% , 0.2% и т.п.)?

Nexus 02.08.2018 16:17

alert((/^[\d\.]+%$/).test('10.0%'));

j0hnik 02.08.2018 16:33

alert((/^\d+\.*\d*%$/).test('10%'));

Dilettante_Pro 02.08.2018 16:39

j0hnik,
alert((/^\d+\.*\d*%$/).test('1..0%'));


alert((/^\d+\.?\d*%$/).test('1..0%'));

Nexus 02.08.2018 16:44

Dilettante_Pro, таки да.
alert((/^\d+\.{0,1}\d*%$/).test('10..0%'));

tai 02.08.2018 16:45

Спасибо. А как сделать ограничение максимум 100% ?

j0hnik 02.08.2018 16:46

Dilettante_Pro,
alert((/^\d+\.?\d*%$/).test('1.%'));

Nexus
alert((/^\d+\.{0,1}\d*%$/).test('1.%'));

Nexus 02.08.2018 16:48

tai,
const val='101%';
if(val.replace(/\D+?/g,'')>100)
    alert('Ахтунг');

Nexus 02.08.2018 16:52

j0hnik,
alert((/^\d+\.??\d+%$/).test('10.%'));

j0hnik 02.08.2018 16:56

Nexus,
ок

Dilettante_Pro 02.08.2018 17:06

j0hnik,
1. - такая запись десятичных чисел не считается ошибкой
alert(1. + 2.);


Если только для красоты.... то да!

рони 02.08.2018 18:37

Цитата:

Сообщение от tai
А как сделать ограничение максимум 100% ?

<script>
     const val = ['100%','101%','99.8%','.8%','1.%', '0.0001%', '2%'];
     const reg = /^(100|\d{0,2}(\.\d*)?)%$/;
     function test(a)
     {
       let obj = {};
       obj[a] = reg.test(a)
       return obj

     }
    const a = val.map(test);
    document.write(JSON.stringify(a, null, 4));

  </script>

laimas 02.08.2018 18:53

100||\d - | или "ничего" тоже требуется?

рони 02.08.2018 18:56

laimas,
???

laimas 02.08.2018 19:13

Логическое ИЛИ, это ||, а в рег. выражениях |

рони 02.08.2018 19:16

laimas,
спасибо, убрал.

tai 03.08.2018 07:07

Можете еще подсказать как эту проверку сделать на ввод данных?
Я использую Inputmask. И если поставить в маске значение " 100| ", то нельзя будет ввести 1% или 10%, 11%, 12% и т.д.


Часовой пояс GMT +3, время: 05:26.