HTML: Soft hyphen (­) without dash?
Though I'm not sure how this does cross-browser (probably pretty well), you could always use the thin space character ( 
) or the zero-width space (++​
).
john.doe @example.com
++ I would not suggest using the zero-width space, as apparently some browsers will not render it correctly (source).
Use a zero-width space: ​
john.doe​@example.com
In action here: http://jsfiddle.net/uTXwx/1/