Próbuję znaleźć wyrażenie regularne, które będzie pasowało do każdego znaku, który nie jest literą ani cyfrą. Tak więc znaki takie jak (,, @, £, () itd ...
Po znalezieniu chcę go zastąpić spacją.
Jakakolwiek rada.
javascript
regex
James Jeffery
źródło
źródło
\w
dotyczy znaków Word i jest dokładnie tym samym, co[a-zA-Z0-9_]
(zauważ, że podkreślenie jest uważane za znak słowa.) ... więc skrót będzie wyglądał następującostr.replace(/[^\w]/g, ' ')
To wyrażenie regularne dopasowuje wszystko, co nie jest literą, cyfrą ani znakiem podkreślenia (
_
).Na przykład w JavaScript:
źródło
Szukasz:
Spowoduje to zastąpienie wszystkich znaków niealfanumerycznych spacją.
Litera „g” na końcu zastępuje wszystkie wystąpienia.
Zamiast określać AZ (małymi literami) i AZ (wielka litera) można również używać w-rozróżniana opcja:
/[^a-z0-9]/gi
.źródło
To o wiele za późno, ale ponieważ nie ma akceptowanej odpowiedzi, chciałbym podać to, co moim zdaniem jest najprostsze: \ D - dopasowuje wszystkie znaki niecyfrowe.
Wyniki w x: "12323525"
Zobacz https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions
źródło
spróbuj zrobić str.replace (/ [^ \ w] /); Zastąpi wszystkie niealfabetyczne i liczby z twojego ciągu!
Edycja 1:
str.replace(/[^\w]/g, ' ')
źródło
str.replace(/[^\w]/g, ' ')
. Jeśli nie dodasz/g
flagi, zastąpi ona tylko pierwsze wystąpienie. A jeśli nie zdefiniujesz ciągu zastępczego, w tym miejscu spacja' '
zostanie zastąpiona wundefined
każdym miejscu. Wreszcie podkreślenia nie zostaną zastąpione, ponieważ pasują\w
. Ta odpowiedź nie pasuje idealnie./[A-Z]/ig
/[^A-Z]/ig
/[0-9]/g
lub/\d+/g
/[^0-9]/g
lub/\D+/g
/[^A-Z0-9]/ig
Istnieją inne możliwe wzory
źródło
Tylko dla innych do zobaczenia:
usunie wszelkie znaki unicode niebędące literami i cyframi.
Źródło
źródło
replaceAll
, a sekwencje znaków\p{..}
właściwości nie są powszechnie stosowane.Czy próbowałeś
str = str.replace(/\W|_/g,'');
, zwróci łańcuch bez żadnego znaku i możesz określić, czy jakiś specjalny znak za kreską potoku|
również je złapie.var str = "1324567890abc§$)% John Doe #$@'.replace(/\W|_/g, '');
to wrócistr = 1324567890abcJohnDoe
lub poszukaj cyfr i liter i zamień je na pusty ciąg („”):
var str = "1324567890abc§$)% John Doe #$@".replace(/\w|_/g, '');
to wrócistr = '§$)% #$@';
źródło
Aby dopasować coś innego niż litera, cyfra lub litera ze znakami diakrytycznymi,
é
możesz spróbować tego:I wymienić:
Zainspirowany górnym postem z obsługą znaków diakrytycznych
źródło
źródło