Risposte:
Dovresti usare la funzione di sostituzione della stringa, con una sola regex. Supponendo caratteri speciali, intendi tutto ciò che non è lettera, ecco una soluzione:
const str = "abc's test#s";
console.log(str.replace(/[^a-zA-Z ]/g, ""));
str.replace(/[^a-zA-Z0-9]/g, "")
str.replace(/[^a-zA-Z0-9 ]/g, "");
avviso c'è uno spazio tra 0-9 e]
Puoi farlo specificando i caratteri che desideri rimuovere:
string = string.replace(/[&\/\\#,+()$~%.'":*?<>{}]/g, '');
In alternativa, per cambiare tutti i caratteri tranne i numeri e le lettere, prova:
string = string.replace(/[^a-zA-Z0-9]/g, '');
/[^a-zA-Z0-9]/g
()
e whitespaces
nella stringa.text().replace(/[ ()]/g, '')
La prima soluzione non funziona per nessun alfabeto UTF-8. (Taglia il testo come Привіт). Sono riuscito a creare una funzione che non utilizza RegExp e utilizzare un buon supporto UTF-8 nel motore JavaScript. L'idea è semplice se un simbolo è uguale in maiuscolo e minuscolo è un carattere speciale. L'unica eccezione è fatta per gli spazi bianchi.
function removeSpecials(str) {
var lower = str.toLowerCase();
var upper = str.toUpperCase();
var res = "";
for(var i=0; i<lower.length; ++i) {
if(lower[i] != upper[i] || lower[i].trim() === '')
res += str[i];
}
return res;
}
Aggiornamento: si noti che questa soluzione funziona solo per le lingue in cui sono presenti lettere minuscole e maiuscole. In lingue come il cinese, questo non funzionerà.
Aggiornamento 2: sono arrivato alla soluzione originale mentre stavo lavorando a una ricerca fuzzy. Se stai anche cercando di rimuovere caratteri speciali per implementare la funzionalità di ricerca, c'è un approccio migliore. Usa qualsiasi libreria di traslitterazione che ti produrrà una stringa solo da caratteri latini e quindi il semplice Regexp farà tutta la magia della rimozione di caratteri speciali. (Funzionerà anche per il cinese e riceverai anche vantaggi collaterali facendo Tromsø
== Tromso
).
Non conosco JavaScript, ma non è possibile utilizzare regex?
Qualcosa del genere [^\w\d\s]
corrisponderà a tutto tranne che a cifre, caratteri e spazi bianchi. Sarebbe solo una domanda per trovare la sintassi in JavaScript.
Ho provato la soluzione molto creativa di Seagul, ma ho scoperto che trattava i numeri anche come personaggi speciali, che non soddisfacevano le mie esigenze. Quindi ecco la mia (non sicura) modifica della soluzione di Seagul ...
//return true if char is a number
function isNumber (text) {
if(text) {
var reg = new RegExp('[0-9]+$');
return reg.test(text);
}
return false;
}
function removeSpecial (text) {
if(text) {
var lower = text.toLowerCase();
var upper = text.toUpperCase();
var result = "";
for(var i=0; i<lower.length; ++i) {
if(isNumber(text[i]) || (lower[i] != upper[i]) || (lower[i].trim() === '')) {
result += text[i];
}
}
return result;
}
return '';
}
reg
nella tua prima funzione.
Prova a usare questo
var result= stringToReplace.replace(/[^\w\s]/gi, '')
qui ^ carati è per negazione \ w per [a-zA-Z0-9_] caratteri di parole e \ s per spazio / [] / gi per globale
punto (.) non può essere considerato speciale. Ho aggiunto una condizione OR alla risposta di Mozfet e Seagull:
function isNumber (text) {
reg = new RegExp('[0-9]+$');
if(text) {
return reg.test(text);
}
return false;
}
function removeSpecial (text) {
if(text) {
var lower = text.toLowerCase();
var upper = text.toUpperCase();
var result = "";
for(var i=0; i<lower.length; ++i) {
if(isNumber(text[i]) || (lower[i] != upper[i]) || (lower[i].trim() === '') || (lower[i].trim() === '.')) {
result += text[i];
}
}
return result;
}
return '';
}
const input = `#if_1 $(PR_CONTRACT_END_DATE) == '23-09-2019' #
Test27919<alerts@imimobile.com> #elseif_1 $(PR_CONTRACT_START_DATE) == '20-09-2019' #
Sender539<rama.sns@gmail.com> #elseif_1 $(PR_ACCOUNT_ID) == '1234' #
AdestraSID<hello@imimobile.co> #else_1#Test27919<alerts@imimobile.com>#endif_1#`;
const replaceString = input.split('$(').join('->').split(')').join('<-');
console.log(replaceString.match(/(?<=->).*?(?=<-)/g));
I caratteri speciali che si desidera rimuovere da una stringa, prepararne un elenco e quindi la funzione di sostituzione javascript dell'utente per rimuovere tutti i caratteri speciali.
var str = 'abc'de#;:sfjkewr47239847duifyh';
alert(str.replace("'","").replace("#","").replace(";","").replace(":",""));
oppure puoi eseguire un ciclo per un'intera stringa e confrontare un singolo carattere con il codice ASCII e rigenerare una nuova stringa.