javascript - 使用正则表达式对垃圾邮件机器人隐藏电子邮件地址

标签 javascript regex preg-replace

我正在网页上动态呈现多个电子邮件地址(邮寄至:)。

我显然需要向垃圾邮件机器人隐藏这些内容。

我最简单的解决方案found is this :

<a href="mailto:coxntact@domainx.com" onmouseover="this.href=this.href.replace(/x/g,'');">link</a>

这涉及在电子邮件地址中放置一个假字符:“X”,然后在单击、复制或粘贴链接后将其删除。

它有效 - 但缺点是它从地址中删除了所有“x”。因为我不能保证我的动态呈现的电子邮件不会包含“x”这个解决方案 - 按原样,它不适合我。

更好的解决方案是在每个电子邮件地址的开头/结尾处放置 3 个或更多“X”,然后在单击链接后使用上述代码将其删除

即:

    <a href="mailto:XXXcontact@domain.comXXX"
onmouseover="this.href=this.href.replace(/x/g,'');">link</a>

我现在需要做的是使用正则表达式,然后在单击电子邮件地址时删除前 3 个“x”

我尝试了以下方法,但没有成功:

  <a href="mailto:xxxcontact@domain.comXXX"
onmouseover="this.href=this.href.replace(^[\s\S]{0,3});">link</a>   

最佳答案

replace 方法需要两个参数 - 第一个是您要匹配的正则表达式,第二个是您要替换的匹配值。还期望您的正则表达式模式将具有用于解释匹配行为的标志。例如,g 将在全局范围内匹配其正在操作的字符串,而 i 将以不区分大小写的方式进行匹配。

您在这里之后的正则表达式可能更符合以下内容:

^(mailto\:)x{3}(.*)x{3}$

也就是说,您的目标是捕获 mailto:(预期出现在字符串的开头),然后丢弃 3 xX 字符,后跟捕获电子邮件地址,但不是字符串末尾预期的 3 个 xX 字符。

这将通过以下方式适合 replace 方法:

.replace(/^(mailto\:)x{3}(.*)x{3}$/i, '$1$2')

也就是说,电子邮件地址可能倾向于连续包含 xX 个字符,这不是公平的吗?如果是这样,您应该将每次出现的 x{3} 以及您在电子邮件地址中前置/附加的相应匹配项替换为电子邮件地址中不太可能包含的内容,或者设计解决问题的另一种方法。

关于javascript - 使用正则表达式对垃圾邮件机器人隐藏电子邮件地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46052970/

相关文章:

javascript - jQuery 中的 PHP (WordPress)

javascript - 如何将 "destoryOnHide"或 "destroyOnClose"设置为 Liferay 中现有的模式对话框?

javascript - 使用 jQuery 动画扩展文本区域

php - 如何删除另一个div中的唯一div标签

php - 用单个空格替换制表符和空格,用单个换行符替换回车和换行符

javascript - 如何在java脚本中运行并获取弹出窗口中html提交按钮的值

java - 正则表达式从路径中删除所有目录名(保留文件名)

javascript - 键值对的正则表达式

windows - 在命令行中将目录树复制到单个目录

Php正则表达式在字符串中的第一个全大写字母单词后插入字符