Do Word Boundaries Work On Symbol Characters?
Solution 1:
Word boundaries \b
represent a zero-width boundary between word characters \w
(in javascript, [A-Za-z_]
) and non-word characters \W
(everything else).
Because of this, there will not be a boundary between two emoticons or when the emoticon is surrounded by spaces, punctuation, etc.
The simplest regex would be /[:;]-?[()]/gi
, which supports smileys )
and frownies (
with optional dashes and eyes :
or winks ;
.
Edit:
This will require either a space or the beginning of the string (as a capturing group since Javascript doesn't support look-behinds), then it uses the above regex, then it must be followed by the end of string or whitespace.
var reg = /(\s|^)[:;]-?[()](?:\s|$)/gi;
var str = 'HiHi:) :) HiHiHi :)';
alert(str.replace(reg, '$1'));
Should replace in these situations: :-)
, cool :( not!
Should not replace in these situations: Digits:(0,1,2,3)
, hi :(.
Solution 2:
As \b
will not work in this case, you could use:
var re = /(\s|^):\)(?!\S)/g;
var str = 'HiHi:) :) HiHiHi :)';
alert(str.replace(re, '$1'));
Which works like a space boundary.
You can add several smileys to it like so:
/(\s|^)(?::\)|:\(|:\||:\]|:\[)(?!\S)/g;
Post a Comment for "Do Word Boundaries Work On Symbol Characters?"