Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

Javascript laat unicode character staan

Pagina: 1
Acties:

  • Tsjilp
  • Registratie: November 2002
  • Niet online
Ik heb een (in mijn ogen) een vreemd JS probleem. Een klant van mij kan met tinyMCE teksten plaatsen op o.a. zijn website. Deze teksten zijn soms van derden gekopieerd en bevatten soms niet toegestane (voor de klant onzichtbare) unicode characters. Die wil ik er uit filteren. Echter, ik kan ze alleen replacen met een ander characters, niet met een lege string.

Op http://jsfiddle.net/9424sdfa/1/ heb ik een testcase aangemaakt. De initiele string bevat tussen de a en de b zo'n ongeldig character (\u001f). Eerst vervang ik alle onzichtbare chars met een zichtbaar char, dat gaat goed. Maar als ik dan die chars weer replace met een lege string blijft die \001f staan :S

Iemand een idee hoe ik dit kan tackelen?

Raar... Is zo gek nog niet


  • pedorus
  • Registratie: Januari 2008
  • Niet online
Het simpelst is om een enkele punt toe te voegen aan dat script om het op te lossen ([google=zero-length regex]). Een betere oplossing is je iets meer te verdiepen in regex karakterklasses en de regex iets aan te passen.

[ Voor 7% gewijzigd door pedorus op 20-01-2015 23:14 ]

Vitamine D tekorten in Nederland | Dodelijk coronaforum gesloten


  • Reinier
  • Registratie: Februari 2000
  • Laatst online: 20:59

Reinier

\o/

\001f zit niet in een van de ranges, toch?

Nvm

[ Voor 14% gewijzigd door Reinier op 20-01-2015 23:22 ]


  • Tsjilp
  • Registratie: November 2002
  • Niet online
Ik heb zelf ook nog wat verder gekeken, hij replaced het karakter gewoon niet, dus bij de eerste regex gaat het al fout. Hij ziet het karakter wel als 'invalid', en plaatst dus de placeholder, maar laat het originele karakter ook staan :S

Tnx to de link van @pedorus heb ik het nu wel werkend, maar daar was wel een extra regex pass voor nodig, beetje jammer.

@pedorus: hoe zou jij de regex aanpassen dan? Ik geef nu de valide ranges mee (A-z + alle gangbare speciale tekens)

Raar... Is zo gek nog niet


  • pedorus
  • Registratie: Januari 2008
  • Niet online
In het simpelste geval bedoel ik dus de extra punt in
JavaScript:
17
var regex = new RegExp('(?!(' + ranges + ')).', 'g');

En dan werkt je voorbeeld.

Maar ipv (?!(...)). kun je ook [^\u0020-\u007F\u00A0-\u00FF\u0100-\u017F] (enz) gebruiken.

Vitamine D tekorten in Nederland | Dodelijk coronaforum gesloten