Jak mogę to zrobić gdziekolwiek?
Zasadniczo próbuję dopasować wszystkie rodzaje różnych znaków, takich jak ampersandy, średniki, znaki dolara itp.
Odpowiedzi:
[^a-zA-Z\d\s:]
\d
i \s
są rozszerzeniami Perl, które zazwyczaj nie są obsługiwane przez starsze narzędzia, takie jak grep
, sed
, tr
, lex
, itp
To powinno wystarczyć:
[^a-zA-Z\d\s:]
Jeśli chcesz traktować akcentowane znaki łacińskie (np. À Ñ) jak zwykłe litery (tzn. Unikaj też ich dopasowywania), musisz również uwzględnić w swoim wyrażeniu regularnym odpowiedni zakres Unicode ( \ u00C0- \ u00FF ), więc wyglądałoby tak:
/[^a-zA-Z\d\s:\u00C0-\u00FF]/g
^
neguje to, co następujea-zA-Z
dopasowuje duże i małe litery\d
dopasowuje cyfry\s
dopasowuje białe znaki (jeśli chcesz dopasować tylko spacje, zamień to na spację):
pasuje do dwukropka\u00C0-\u00FF
pasuje do zakresu Unicode dla akcentowanych znaków łacińskich.nb. Dopasowanie zakresu Unicode może nie działać dla wszystkich silników regex, ale powyższe z pewnością działa w Javascript (jak widać na tym piórze w Codepen).
nb2. Jeśli nie przejmujesz się dopasowywaniem podkreśleń, możesz zastąpić a-zA-Z\d
je \w
literami, cyframi i podkreśleniami.
Spróbuj tego:
[^a-zA-Z0-9 :]
Przykład JavaScript:
"!@#$%* ABC def:123".replace(/[^a-zA-Z0-9 :]/g, ".")
Zobacz przykład online:
[^a-zA-Z0-9 :]
można zastąpić[^\w:]
Bez znaków alfanumerycznych, spacji lub „_”.
var reg = /[^\w\s)]|[_]/g;
To wyrażenie regularne działa w językach C # , PCRE i Go, żeby wymienić tylko kilka.
Z tego, co mówi RegexBuddy, nie działa dla JavaScript w Chrome . Ale jest na to już przykład.
Ta główna część to:
\p{L}
który reprezentuje \p{L}
lub \p{Letter}
dowolny rodzaj listu z dowolnego języka. "
Samo pełne wyrażenie regularne: [^\w\d\s:\p{L}]
Przykład: https://regex101.com/r/K59PrA/2
W JavaScript:
/[^\w_]/g
^
negacja, czyli wybierz wszystko, czego nie ma w następującym zestawie
\w
dowolny znak słowa (tj. dowolny znak alfanumeryczny plus podkreślenie)
_
zaneguj podkreślenie, ponieważ jest uważane za znak „słowa”
Przykład użycia - const nonAlphaNumericChars = /[^\w_]/g;
/[^a-zA-Z0-9\s\:]*/