Na przykład:
function(input){
var testVar = input;
string = ...
string.replace(/ReGeX + testVar + ReGeX/, "replacement")
}
Ale to oczywiście nie działa :) Czy jest na to sposób?
javascript
regex
variables
Adam
źródło
źródło
Odpowiedzi:
Aktualizacja
W przypadku niektórych komentarzy należy zauważyć, że możesz chcieć uciec od zmiennej, jeśli istnieje możliwość wystąpienia złośliwej zawartości (np. Zmienna pochodzi z danych wprowadzonych przez użytkownika)
Aktualizacja ES6
W 2019 r. Byłoby to zwykle napisane przy użyciu ciągu szablonu, a powyższy kod został zaktualizowany. Oryginalna odpowiedź brzmiała:
źródło
regex
wyrażeniu/\w+\//i
stajenew RegExp("\\w+/", "i")
Możesz użyć obiektu RegExp:
Następnie możesz budować
regexstring
w dowolny sposób.Możesz przeczytać więcej na ten temat tutaj .
źródło
Aby zbudować wyrażenie regularne ze zmiennej w JavaScript, musisz użyć
RegExp
konstruktora z parametrem string.oczywiście jest to bardzo naiwny przykład. Zakłada się, że
input
poprawnie zapisano go dla wyrażenia regularnego. Jeśli masz do czynienia z wprowadzaniem danych przez użytkownika lub po prostu chcesz wygodniej dopasowywać znaki specjalne, musisz uciec od znaków specjalnych :źródło
ReGeX
tekstu. Użyłem więc:return new RegExp(input, flags);
\\
reprezentuje pojedynczy\
znak,$&
jest dopasowanym podciągiem .jeśli używasz literałów szablonu es6 są opcją ...
źródło
^[^\s]{${4},${32}}$
); export const validatePassword = wartość => wartość.match (newRegExp); ``Zawsze możesz podać wyrażenie regularne jako ciąg znaków, tj
"ReGeX" + testVar + "ReGeX"
. Być może będziesz musiał uciec przed niektórymi znakami w ciągu (np. Podwójny cudzysłów), ale w większości przypadków jest to równoważne.Możesz także użyć
RegExp
konstruktora, aby przekazać flagi ( zobacz dokumentację ).źródło
Możesz utworzyć wyrażenia regularne w JS na jeden z dwóch sposobów:
/ab{2}/g
new RegExp("ab{2}", "g")
.Literały wyrażeń regularnych są stałe i nie można ich używać ze zmiennymi. Można to osiągnąć za pomocą konstruktora. Struktura konstruktora RegEx jest
Zmienne można osadzać jako część regularExpressionString. Na przykład,
Będzie pasować do każdego wyglądu wzoru
cdcdcd
.źródło
Oto całkiem bezużyteczna funkcja, która zwraca wartości zawinięte przez określone znaki. :)
jsfiddle: https://jsfiddle.net/squadjot/43agwo6x/
źródło
zaakceptowana odpowiedź nie działa dla mnie i nie jest zgodna z przykładami MDN
patrz sekcja „Opis” w powyższym linku
Wybrałbym następujące, które działają dla mnie:
źródło
Trzeba tylko najpierw przygotować zmienną łańcuchową, a następnie przekonwertować ją na RegEx.
na przykład:
Chcesz dodać
minLength
iMaxLength
za pomocą zmiennej do RegEx:teraz, jeśli zmienisz wartość
MaxLength
lubMinLength
, to zmieni się we wszystkich RegExs.Mam nadzieję, że się przydadzę. Przepraszam również za mój angielski.
źródło