Używam następującego wyrażenia regularnego
^[a-zA-Z0-9\',!;\?\$\^:\\\/`\|~&\" @#%\*\{}\(\)_\+\.\s=-]{1,1000}$
Wiem, że jest brzydki, ale jak dotąd służy on innym celom niż ukośnik odwrotny nie jest dozwolony tak, jak myślę, że powinien, ponieważ uciekł, próbowałem też \\
zamiast, \\\
ale te same wyniki. Jakieś pomysły?
Odpowiedzi:
Jeśli umieszczasz to w łańcuchu w programie, być może będziesz musiał użyć czterech odwrotnych ukośników (ponieważ parser łańcuchów usunie dwa z nich podczas "usuwania zmiany znaczenia" dla ciągu) , a następnie wyrażenie regularne potrzebuje dwóch na unikano odwrotnego ukośnika wyrażenia regularnego).
Na przykład:
jest interpretowane jako ...
jest interpretowane jako ...
jest interpretowane jako wyrażenie regularne, które pasuje do pojedynczego ukośnika odwrotnego.
W zależności od języka możesz użyć innej formy cytowania, która nie analizuje sekwencji ucieczki, aby uniknąć konieczności używania ich tylu - na przykład w Pythonie:
r
Przed cytatów sprawia, że surowy ciąg, który nie analizowania ucieczek BACKSLASH.źródło
new RegExp('\\\\\\d');
.Jeśli nie jest to literał, musisz użyć
\\\\
, aby uzyskać,\\
co oznacza uciekający odwrotny ukośnik.To dlatego, że istnieją dwie reprezentacje. W łańcuchowej reprezentacji twojego wyrażenia regularnego masz
"\\\\"
, co jest wysyłane do parsera. Parser zobaczy,\\
co interpretuje jako prawidłowy odwrócony ukośnik uciekający (który pasuje do pojedynczego odwrotnego ukośnika).źródło
Ukośnik odwrotny
\
to znak zmiany znaczenia w wyrażeniach regularnych. Dlatego podwójny lewy ukośnik rzeczywiście oznaczałby pojedynczy, dosłowny odwrotny ukośnik.\ (backslash) followed by any of [\^$.|?*+(){} escapes the special character to suppress its special meaning.
ref: http://www.regular-expressions.info/reference.html
źródło
Z http://www.regular-expressions.info/charclass.html :
W jakim języku piszesz wyrażenie regularne?
źródło
To rozwiązanie rozwiązało mój problem podczas zamiany tagu br na „\ n”.
źródło