Hoi iedereen. Ik wil in javascript graag bij een string alle speciale karakters verwijderen en alle leegruimtes vervangen door een verbindingsstreepje. Bij meerdere lege ruimtes naast elkaar mag er maar 1 verbindgsstreepje voor de plaats komen uiteraard. Ik heb nu het volgende, waarbij alle speciale karakters worden verwijderd. Mijn vraag is: Is onderstaande de juiste werkwijze is om alle speciale symbolen eruit te filteren en hoe krijg ik het voor elkaar om de leegruimte te vervangen door een verbindingsstreepje?



string = "bla & ?  bla bla";
newstring = string.replace(/[^\p{L}\d\s]+/gu, '');

Zoiets?
newstring = string.replace(/[\W_]+/g,"-");
Eigenlijk is het iets meer werk. Je moet wat "edge cases" opvangen, zoals gekke tekens aan het begin en/of eind van de string. Ongeveer zoiets:


let test = '  a b c & d 1 f ABCDEF &'

test = test.trim() // trim spaces from beginning/end
test = test.toLowerCase()
test = test.replace(/[\W_]+/g, '-') // replace any non-word characters by hyphens
test = test.replace(/^[-]+|[-]+$/g, ''); // trim hyphens from beginning/end

console.log(test)
Nee joh, niks te danken, ben je gek ;-)
sorry dat ik even niet heb gereageerd. had het nogal druk laatste tijd. Iedereen bedankt voor jullie bijdrage. enorm mee geholpen. toch erg fijn dit forum.
Jan Koehoorn op 08/05/2024 15:59:47

Eigenlijk is het iets meer werk. Je moet wat "edge cases" opvangen, zoals gekke tekens aan het begin en/of eind van de string.

Toch fijn dat er mensen zijn met verstand van reguliere expressies.
Ik kon er nooit echt aan wennen, mede omdat er meerdere standaarden zijn.
Dus: dank aan Jan!

Reageren