Reputation: 25728
I have some javascript that generates an html string, then passes it to some more javascript that I do not control, where all whitespace is collapsed (don't ask).
I would like to maintain my whitespace across this transformation, by changing the whitespace to a character (I've been using periods) and using a span to set the text color to be the same as the background. This text can't be highlighted, so this is a reasonably accurate whitespace substitute
I'm trying to develop a regex that will allow me to do a transformation like this
"a b c"
-> `"a...b.c"
I know I can take care of the simple case by simply replacing every single space with the <span>.</span>
like this str.replace(/s/g,"<span class="whitespace">.</span>)
but I'd really prefer to remove the excess tags and match each group of whitespace instead of having an individual span tag for each space.
Any suggestions would be appreciated.
Upvotes: 0
Views: 380
Reputation: 63424
How about this: three steps.
Match all white space of 3 or more. Replace the 'inside' spaces.
/(?<=\s)\s+(?=\s)/./
Match all single white spaces not preceded by a period.
/(?<!\.)\s/<span>./
Match span followed by dots.
/(<span>\.+)/$1<\/span>/
(My regex-fu is only brown belt so you might need to adjust for some escapes or such).
Upvotes: 0
Reputation: 25728
I was able to do it like this:
var str=name.replace(/\s+/g,'<span class="whitespace">$&</span>');
str=str.replace(/\s/g,".");
return str;
Upvotes: 2
Reputation: 1277
Have you tried convert all whitespace to
?
str.replace(/\s/g,' ')
Upvotes: 0