Ta strona używa ciasteczek (cookies), dzięki którym nasz serwis może działać lepiej. Dowiedz się więcej OK, rozumiem

RegExp - zmienna w wyrażeniu.

Tworzenie dynamicznych stron internetowych z zastosowaniem JavaScript, jQuery, Ajax. Dowiedz się jak to zrobić, znajdź rozwiązania swoich problemów.

RegExp - zmienna w wyrażeniu.

Post 09.01.2019, 22:09:28

Witam,
Kiedy do new RegExp podaję zmienną jak w kodzie niżej to sprawdzenie czy podane wyrażenie jest prawdziwie nie działa.
Kod: Zaznacz cały
var reg_object = new RegExp(number);

Zmienna ma następującą postać.
Kod: Zaznacz cały
var number = "^-?\d*$";

A całość prezentuje się mniej więcej tak
Kod: Zaznacz cały
//input_val zmienna przechowująca dane z pola input
var number = "^-?\d*$";
var reg_object = new RegExp(number);
if(reg_object.test(input_val)) {
    console.log('WYRAŻENIE JEST POPRAWNE');
} else {
    console.log('Wyrażenie jest błędne');
}


Natomiast kiedy w RegExp wstawię wyrażenie regularne jak niżej, wszystko działa prawidłowo.
Kod: Zaznacz cały
var reg_object = new RegExp( "^-?\d*$");


Zależy mi na wstawianiu zmiennej, gdyż w zależności od pola input będzie sprawdzane inne wyrażenie regularne. A powielanie tego samego kodu jest bezsensu. Wydaje mi się, że źle zabrałem się do problemu i chyba trzeba podejść do sprawy nie co inaczej. Macie jakieś propozycje?
nuter007
Posty: 132
Dołączył(a): 04.03.2014

Re: RegExp - zmienna w wyrażeniu.

Post 10.01.2019, 01:12:04

Niestety nie potrafię zreprodukować Twojego problemu. Jeśli w obydwu scenariuszach korzystasz z funkcji RegExp, do której przekazujesz parametr w postaci tekstu czy to bezpośrednio czy przez zmienną, to nie będzie to robiło różnicy. Różnica będzie tylko w przypadku gdy w jednym scenariuszu korzystasz z literału wyrażenia regularnego

Kod: Zaznacz cały
/^-?\d*$/


ponieważ
Kod: Zaznacz cały
/^-?\d*$/
nie jest równoważne
Kod: Zaznacz cały
RegExp("^-?\d*$")


a to dlatego, że w literale \d jest interpretowane dosłownie jako odpowiednik [0-9].

W treści stringa znak \ ma specjalną funkcję, np. "\n" oznacza znak nowej linii. "\d" nie ma specjalnego znaczenia, więc wynikowy tekst będzie równy "d", zatem dalszy kod będzie wyglądał

Kod: Zaznacz cały
RegExp("^-?d*$")
Dziękuję wszystkim za lata współpracy, ciekawych pytań i dyskusji. Będę wspominał to forum z wielkim sentymentem • kukawski.pl
Avatar użytkownikakuku
Rafał Kukawski

410 Gone
410 Gone

Posty: 19870
Dołączył(a): 14.04.2002

Re: RegExp - zmienna w wyrażeniu.

Post 10.01.2019, 18:12:17

W takim razie jak w RegExp zapisać wyrażenie z \d?
nuter007
Posty: 132
Dołączył(a): 04.03.2014

Re: RegExp - zmienna w wyrażeniu.

Post 10.01.2019, 19:18:00

Kod: Zaznacz cały
RegExp("\\d");
Dziękuję wszystkim za lata współpracy, ciekawych pytań i dyskusji. Będę wspominał to forum z wielkim sentymentem • kukawski.pl
Avatar użytkownikakuku
Rafał Kukawski

410 Gone
410 Gone

Posty: 19870
Dołączył(a): 14.04.2002


Powrót do JavaScript


 


  • Podobne wątki
    Odpowiedzi
    Wyświetlone
    Ostatni post

Kto przegląda forum

Użytkownicy przeglądający ten dział: Bing [Bot] i 4 gości

Hosting, Domeny, SSL

Subskrypcja

Mamy 52890 zarejestrowanych użytkowników.
Najnowszy użytkownik: ColomboBio


Nasi użytkownicy napisali:

  • 939105 wiadomości
  • w 248344 tematach

Najnowsze wpisy na blogu

Najnowsze artykuły

Najaktywniejsi (ostatnie 30 dni)