Speciale tekens uit de tekenreeks weglaten met JQuery

Ik moet een bepaald type pixel implementeren voor analyse en het vereist het doorgeven van een sessie-id in de url-reeks. Mijn sessionID bevat speciale tekens. Het ziet er ongeveer zo uit BFhGlzT6FBkDr2Zndp0! -1309 Ik moet de (-!) Tekens uit deze reeks verwijderen, hoe bereik ik dit met jQuery? Ik moet ervoor zorgen dat jQuery die tekens verwijdert voordat deze worden gerenderd, anders meldt het geen bezoek aan de analyse.

Jongens bedanken je hulp, maar misschien moet ik wat verder uitleggen, mijn pixelcode ziet er wat zo uit "

img src="https://sometime.com/png?org_id=k8vif92&session_ id=T6PtTyRSqhGPYBhp84frwth67n6fL7wcLBFhGlzT6FBkDr2Zndp0!-130901808!1319637471144&m=2&m=2" alt="">

Voordat deze pixel wordt geactiveerd, moet ik het teken in de sessionId-tekenreeks vervangen om te verwijderen! - en houd er rekening mee dat sessie-ID telkens verandert als er een nieuwe sessie is. Ik heb een code nodig die generiek is, dus het werkt ongeacht de sessie-ID, het moet speciale tekens verwijderen.

0

5 antwoord

Probeer .replace te gebruiken:

var token = "BFhGlzT6FBkDr2Zndp0!-1309";
token.replace(/[^A-Za-z0-9]/g, "");

hiermee wordt elk teken verwijderd dat geen letter of cijfer is. Korter:

token.replace(/\W/g, "");

(dit zal geen onderstrepingstekens vervangen)

2
toegevoegd
Ja, dat was maar een voorbeeldcode. Maar de reguliere expressie werkt voor een sessie-id
toegevoegd de auteur Alex Peattie, de bron
In plaats van de expliciete karakters te vervangen zoals anderen hebben voorgesteld, maakt hij een set van alle personages die je wel wilt, en neemt dan de inverse van die set aan ... daarom vervangt hij alle personages die je niet wilt ... het zal werken voor alle snaren
toegevoegd de auteur jyore, de bron
Bedankt voor het antwoord, maar houd er rekening mee dat sessie-ID-tekens niet elke keer hetzelfde zijn als het wordt uitgevoerd, afhankelijk van de sessie. Ik hoef alleen het speciale karakter te verwijderen, ongeacht welke sessie-id andere letters zijn
toegevoegd de auteur Junoonis, de bron

Black-listing ! en - ( fiddle ):

var url = "BFhGlzT6FBkDr2Zndp0!-1309";
document.write(url.replace(/[!\-]/g,""));

Alfanumeriek op een witte lijst ( fiddle ):

var url = "BFhGlzT6FBkDr2Zndp0!-1309";
document.write(url.replace(/[^a-z0-9]/ig,""));
1
toegevoegd
Terzijde, de - hoeft niet te worden geëscaped als het het laatste teken in de klas is.
toegevoegd de auteur Brad Christie, de bron

Definieer een tekenset voor reguliere expressies die alle toegestane tekens bevat. Uw advertentie kan er bijvoorbeeld uitzien als /[a-zA-Z0-9]/. Keer het nu om met de complementaire tekenset [^ a-zA-Z0-9] en verwijder al die tekens met de methode String.replace .

mystring = mystring.replace(/[^a-zA-Z0-9]/g, "");
0
toegevoegd

You dont need jQuery for this. You can use JavaScript regex. See this jsfiddle

var code = "BFhGlzT6FBkDr2Zndp0!-1309";

code = code.replace(/[!-]/g,"");

alert(code);
0
toegevoegd
var str = "BFhGlzT6FBkDr2Zndp0!-1309".replace("!-","");

fiddle: http://jsfiddle.net/neilheinrich/eYCjX/

0
toegevoegd
@ mblase75: Ik moet zeggen dat ik de benadering van nheinrish leuk vind. 1) Het is recht en to the point; 2) mensen zijn te snel om regex te concluderen (vooral gezien de beknoptheid en vaagheid van de oorspronkelijke vraag); 3) Het is een perfect acceptabel antwoord.
toegevoegd de auteur Brad Christie, de bron
Er is niet genoeg informatie beschikbaar om te weten of streepjes/pony's of andere niet-numerieke tekens legaal kunnen zijn in de tekenreeks. Op basis van de verstrekte informatie is dit een zeer eenvoudige manier om de twee genoemde personages te verwijderen. Als er een wens is om alle niet-numerieke gegevens of alle exemplaren van "!" Te verwijderen of "-", ja er kunnen betere oplossingen zijn.
toegevoegd de auteur nheinrich, de bron
Gewoon proberen om @ mblase75 te helpen. Als het OP zei dat ik alle varianten van die twee karakters wilde verwijderen, had ik het anders benaderd.
toegevoegd de auteur nheinrich, de bron
Als u alle exemplaren van beide wilt weglaten! en - u kunt gebruiken: str.replace (/ [! -]/g, ""). Fiddle: jsfiddle.net/neilheinrich/zQ5Ya
toegevoegd de auteur nheinrich, de bron
Dit is misschien te gespecialiseerd ... het vervangt alleen de eerste match ... en het moet in die volgorde zijn ... de andere reguliere oplossingen zijn beter
toegevoegd de auteur jyore, de bron
Ik heb de vraag bijgewerkt, zie hierboven.
toegevoegd de auteur Junoonis, de bron
Ik wil wel dat alle speciale tekens worden weggelaten. Deze oplossing werkt, maar het verwijdert alleen de eerste instantie van (! -) en laat de laatste weg! in de string.
toegevoegd de auteur Junoonis, de bron