簡體   English   中英

使用正則表達式隱藏垃圾郵件機器人的電子郵件地址

[英]using regular expression to hide email address from spam bots

我正在網頁上動態呈現多個電子郵件地址(發送至:)。

我顯然需要從垃圾郵件機器人中隱藏這些內容。

發現的最簡單的解決方案

 <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}和您在電子郵件地址之前/之后附加的對應匹配項,或者設計一種替代方法來解決此問題。

您可以嘗試以下方法

<a href="mailto:^$^contact@domain.com^$^" onmouseover="this.href=this.href.replace(/[\^][\$][\^]/g,'');">link</a>

它基本上可以代替^$^而不是XXXX常見出現

為了避免混淆,我會避免在您的郵件地址中添加或多或少的常見字符。 而是嘗試某種非常基本的加密,例如切換位或按char接受字符串char,並將char代碼增加固定值。
例:

var mailto = "mailto:contact@domain.com";
var obfuscated = "";
for (let i = 0; i < mailto.length; i++) {
    obfuscated += String.fromCharCode(mailto.charCodeAt(i) + 7);
}
//obfuscated now looks like this: "thps{vAjvu{hj{Gkvthpu5jvt"
//to reverse the process, do the same thing and subtract 7.
//You could extract the code to a method that you simply call with "onmouseover"

希望這會有所幫助,盡管無法准確回答您的問題:)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM