BG Development


  Reply to this topicStart new topicStart Poll

> Променлива в регулярен израз
xhister
Публикувано на: 07-05-2018, 14:42
Quote Post



Име: Петър
Група: Потребител
Ранг: Посетител

Мнения: 96
Регистриран на: 09.09.16



Имам функция, която позволява да валидирам текстово поле в дробно число, която тази функция позволява да кажа колко числа след точката е позволено да напиша. В тази функция съм използвал регулярен израз, за да може в полето да се съдържа само една точка. Проблемът обаче е, че когато съхраня регулярният израз в RegExp обект и вкарам променливата, която определя колко числа трябва да имам след точката, не работи и така оставам с алтернативата да напиша ръчно броят на числата, а не динамично да ги управлявам.

CODE

HTML:

<input type="text" autocomplete="off" oninput="filterInput(this, 2)" onkeypress="return floatNumbers(event);" id="principal" placeholder="Write down your principal here">

-----------------------------------------------------

JavaScript:


function filterInput(elem, nums)
{
   var getValue = elem.value;
   elem.value = getValue.replace(/^\./, '');
   if(getValue.indexOf('.') > 0)
   {
       var reg = new RegExp("/([^\\d]*)(\\d*(\\.\\d{0," + nums + "})?)(.*)/"); //това изглежда не е наред
       console.log(reg);
       elem.value = getValue.replace(reg, '$2');

       //elem.value = getValue.replace(/([^\\d]*)(\\d*(\\.\\d{0,2})?)(.*)/, '$2'); <--- това работи, но искам да работи динамично чрез RegExp обекта.
   }
}

function floatNumbers(evt)
{
   if (evt.charCode == 46)
   {
       return true;
   }
   if(evt.keyCode == 8)
   {
       return true;
   }
   if(evt.charCode >= 48 && evt.charCode <=57)
   {
       return true;
   }
   else
   {
       return false;
   }
}

PMEmail Poster
Top
xhister
Публикувано на: 07-05-2018, 14:54
Quote Post



Име: Петър
Група: Потребител
Ранг: Посетител

Мнения: 96
Регистриран на: 09.09.16



Няма значение, оправих си проблема. Проблемът беше, че регулярният израз записан по този начин /.../ в string, означава, че двете наклонени черти се ескейпват и са част от търсенето, докато регулярният израз записан по този начин, не в String, означава, че е регулярен израз, но наклонените черти в края не участват в търсенето. Ето това имам предвид:
CODE

var reg = new RegExp("([^\\d]*)(\\d*(\\.\\d{0," + n + "})?)(.*)");


CODE

elem.value = getValue.replace(/([^\d]*)(\d*(\.\d{0,2})?)(.*)/, '$2');


Може някои да го знаят това и да им изглежда смешно как обяснявам по нелеп начин, но други може и да не го знаят и може да си бият главата като мене.

Това мнение е било редактирано от xhister на 07-05-2018, 14:59
PMEmail Poster
Top
erazor
Публикувано на: 07-05-2018, 16:37
Quote Post



Име: Димитър
Група: Потребител
Ранг: Старо куче

Мнения: 627
Регистриран на: 26.06.07



QUOTE (xhister @ 07-05-2018, 14:54)
Може някои да го знаят това и да им изглежда смешно как обяснявам по нелеп начин, но други може и да не го знаят и може да си бият главата като мене.

Поздравления че след като си открил решението се върна и го сподели, точно за това е форума.
PMEmail PosterICQ
Top
xhister
Публикувано на: 07-05-2018, 21:05
Quote Post



Име: Петър
Група: Потребител
Ранг: Посетител

Мнения: 96
Регистриран на: 09.09.16



QUOTE (erazor @ 07-05-2018, 16:37)
QUOTE (xhister @ 07-05-2018, 14:54)
Може някои да го знаят това и да им изглежда смешно как обяснявам по нелеп начин, но други може и да не го знаят и може да си бият главата като мене.

Поздравления че след като си открил решението се върна и го сподели, точно за това е форума.

Радвам се, че съм помогнал по някакъв начин.
PMEmail Poster
Top
0 потребители преглеждат тази тема в момента (0 гости, 0 анонимни потребители)
Потребители, преглеждащи темата в момента:

Topic Options Reply to this topicStart new topicStart Poll

 


Copyright © 2003-2018 | BG Development | All Rights Reserved
RSS 2.0