2009-12-31 7 views
27

sto cercando di verificare le stringhe per rendere il nostro URL validi di loromantenere solo AZ 0-9 e rimuovere altri personaggi stringa utilizzando JavaScript

ho bisogno di tenere solo AZ 0-9 e rimuovere altri personaggi stringa utilizzando javascript o jquery

ad esempio:

Belleâ € ™ s Restaurant

ho bisogno di convertirlo in:

Belle-s-Restaurant

così personaggi â € ™ s rimosso e solo AZ az 0-9 sono tenuti

grazie

+0

Hai letto la stringa nella codifica errata. Se decodifichi come UTF-8, puoi vedere che il carattere è U + 2019 che è il carattere '''. Anche se ciò non influisce sulla soluzione in quanto UTF-8 garantisce che i codici ASCII non compaiano nei codici multibyte, penso che dovresti comunque aggiornare il tuo codice per utilizzare la codifica di testo corretta. Se fai questo errore qui, qualcuno potrebbe copiare il tuo codice e fare lo stesso errore altrove dove mostrerà ai tuoi clienti. –

risposta

35

Aggiungendo il nostro metodo .cleanup() per l'oggetto String stesso, è quindi possibile pulire qualsiasi stringa in Javascript semplicemente chiamando un metodo locale, come questo:

# Attaching our method to the String Object 
String.prototype.cleanup = function() { 
    return this.toLowerCase().replace(/[^a-zA-Z0-9]+/g, "-"); 
} 

# Using our new .cleanup() method 
var clean = "Hello World".cleanup(); // "hello-world" 

Perché c'è un segno più alla fine dell'espressione regolare corrisponde a uno o più caratteri. Così, l'uscita avrà sempre una '-' per ciascuna serie di uno o più caratteri non alfanumerici:

# An example to demonstrate the effect of the plus sign in the regular expression above 
var foo = " Hello World . . .  ".cleanup(); // "-hello-world-" 

Senza il segno più il risultato sarebbe "--hello-world--------------" per l'ultimo esempio.

4

O questo, se si voleva mettere trattini al posto di altri caratteri:

string.replace(/[^a-zA-Z0-9]/g,'-'); 
2

Supponendo che la stringa è conservato in una variabile denominata BizName:

BizName.replace(/[^a-zA-Z0-9]/g, '-'); 

BizName dovrebbe coinvolgere solo i caratteri richiesti

Problemi correlati