2010-06-07 12 views

Odpowiedz

102

Aby dopasować coś innego niż litery lub numer można spróbować to:

[^a-zA-Z0-9] 

i zastąpić:

var str = 'dfj,dsf7lfsd .sdklfj'; 
str = str.replace(/[^A-Za-z0-9]/g, ' '); 
+11

'\ w' jest dla znaków Word i jest dokładnie taka sama jak' [a-zA-z0-9_] '(. Zauważ, że podkreślenia jest uważany za postać słowo) ... więc skrótem będzie 'str.replace (/ [^ \ w]/g, '')' –

+0

, ale będzie także zawierał wiele liter Unicode! czy istnieje sposób na wykluczenie liter unicode? –

+0

Aby uwzględnić znaki Unicode, można użyć [^ \ p {L} 0-9] – Dave

13

szukasz:

var yourVar = '1324567890abc§$)%'; 
yourVar = yourVar.replace(/[^a-zA-Z0-9]/g, ' '); 

Zastępuje wszystkie znaki niealfanumeryczne spacją.

"g" na końcu zastępuje wszystkie wystąpienia.

Zamiast podawać a-z (małe litery) i A-Z (wielkie litery), można również użyć opcji z dużą liczbą liter: /[^a-z0-9]/gi.

+0

Czy będzie pasować również do spacji? Potrzebuję miejsc, które należy zachować. Dzięki. –

+0

Znaki spacji będą pasować, ale zostaną zastąpione znakami spacji, więc w efekcie zostawiłoby je w spokoju (spacja pozostanie spacja). – jimbojw

21

To wyrażenie regularne nie pasuje do liter, cyfr i podkreśleń znaków.

 

\W 
 

Na przykład w javascript:

 

"(,,@,£,() asdf 345345".replace(/\W/g, ' '); 
 
+0

Wierzę, że on szuka/(_ | \ W)/g, aby dopasować wszystko, co nie jest cyfrą lub literą (język angielski) – kennebec

+5

... lub/[\ W _]/być może – Pointy

1

Czy próbowałeś str = str.replace(/\W|_/g,''); zwróci ciąg bez charakteru i można określić, czy jakikolwiek szczególny charakter po drążku rury | również je złapać.

var str = "1324567890abc§$)% John Doe #[email protected]'.replace(/\W|_/g, ''); powróci str = 1324567890abcJohnDoe

lub szukać cyfr i liter i wymień je na pusty ciąg (""):

var str = "1324567890abc§$)% John Doe #[email protected]".replace(/\w|_/g, ''); powróci str = '§$)% #[email protected]';

2

Wystarczy, aby inni mogli zobaczyć:

someString.replaceAll("([^\\p{L}\\p{N}])", " "); 

usunie wszystkie znaki Unicode i Non-Number Unicode.

Source

0

spróbować zrobić ul.zamień (/ [^ \ w] /); Zastąpi wszystkie nie-alfabety i liczby z twojego ciągu!

Edit 1: str.replace(/[^\w]/g, ' ')

+1

Odpowiedź robocza brzmi: "str. replace (/ [^ \ w]/g, '') '. Jeśli nie podasz flagi '/ g', zastąpi ona tylko pierwsze wystąpienie. A jeśli nie zdefiniujesz zastępczego łańcucha, tutaj pusta przestrzeń "" ", zastąpi ją" niezdefiniowanym "w każdym miejscu. Na końcu podkreślenia nie zostaną zastąpione, ponieważ pasują do '\ w'. Ta odpowiedź nie jest idealnie dopasowana. –