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.
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.
Odpowiedzi:
Aby dopasować coś innego niż litera lub cyfra, możesz spróbować tego:
[^a-zA-Z0-9]
I wymienić:
var str = 'dfj,dsf7lfsd .sdklfj';
str = str.replace(/[^A-Za-z0-9]/g, ' ');
To wyrażenie regularne dopasowuje wszystko, co nie jest literą, cyfrą ani znakiem podkreślenia ( _
).
\W
Na przykład w JavaScript:
"(,,@,£,() asdf 345345".replace(/\W/g, ' '); // Output: " asdf 345345"
Szukasz:
var yourVar = '1324567890abc§$)%';
yourVar = yourVar.replace(/[^a-zA-Z0-9]/g, ' ');
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
.
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.
var x = "123 235-25%";
x.replace(/\D/g, '');
Wyniki w x: "12323525"
Zobacz https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions
spróbuj zrobić str.replace (/ [^ \ w] /); Zastąpi wszystkie niealfabetyczne i liczby z twojego ciągu!
Edycja 1: str.replace(/[^\w]/g, ' ')
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 w undefined
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
Tylko dla innych do zobaczenia:
someString.replaceAll("([^\\p{L}\\p{N}])", " ");
usunie wszelkie znaki unicode niebędące literami i cyframi.
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óci str = 1324567890abcJohnDoe
lub poszukaj cyfr i liter i zamień je na pusty ciąg („”):
var str = "1324567890abc§$)% John Doe #$@".replace(/\w|_/g, '');
to wróci str = '§$)% #$@';
Aby dopasować coś innego niż litera, cyfra lub litera ze znakami diakrytycznymi, é
możesz spróbować tego:
[^\wÀ-úÀ-ÿ]
I wymienić:
var str = 'dfj,dsf7é@lfsd .sdklfàj1';
str = str.replace(/[^\wÀ-úÀ-ÿ]/g, '_');
Zainspirowany górnym postem z obsługą znaków diakrytycznych
\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, ' ')