我正在网页上动态呈现多个电子邮件地址(邮寄至:)。
我显然需要向垃圾邮件机器人隐藏这些内容。
我最简单的解决方案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 x
或 X
字符,后跟捕获电子邮件地址,但不是字符串末尾预期的 3 个 x
或 X
字符。
这将通过以下方式适合 replace
方法:
.replace(/^(mailto\:)x{3}(.*)x{3}$/i, '$1$2')
也就是说,电子邮件地址可能倾向于连续包含 x
或 X
个字符,这不是公平的吗?如果是这样,您应该将每次出现的 x{3}
以及您在电子邮件地址中前置/附加的相应匹配项替换为电子邮件地址中不太可能包含的内容,或者设计解决问题的另一种方法。
关于javascript - 使用正则表达式对垃圾邮件机器人隐藏电子邮件地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46052970/