Я просто должен дать другой ответ. Я только что придумал, с чем поиграть.
Я обнаружил, что во многих таблицах общих символов буквы @ и a-z появляются несколько раз. Вы можете сопоставить оригинальных персонажей с новыми сопоставлениями и усложнить для спам-ботов, чтобы выяснить, что такое электронная почта.
Если вы перебираете строку и получаете символьный код буквы, затем добавляете к ней 65248 и строите html-сущность на основе числа, вы получаете читаемый человеком адрес электронной почты.
var str = 'john.doe@email.com';
str = str.toLowerCase().replace(/[\.@a-z]/gi, function(match, position, str){
var num = str.charCodeAt(position);
return ('&#' + (num + 65248) + ';');
});
Вот рабочая скрипка: http://jsfiddle.net/EhtSC/8/
Вы можете улучшить этот подход, создав более полный набор сопоставлений между персонажами, которые выглядят одинаково. Но, например, если вы скопируете / вставите электронное письмо в блокнот, вы получите много ящиков.
Чтобы преодолеть некоторые проблемы с пользовательским интерфейсом, я создал электронное письмо как ссылку. Когда вы щелкаете по нему, он переводит символы обратно в их оригиналы.
Чтобы улучшить это, вы можете создавать более сложные сопоставления символов, если хотите. Если вы можете найти несколько символов, которые можно использовать, например, вместо «а», почему бы не назначить их случайным образом.
Вероятно, не самый безопасный подход, но мне действительно было весело играть с ним: D