簡體   English   中英

RegExp匹配網址,不影響電子郵件地址

[英]RegExp matching url w/o affect email address

假設我有一個這樣的文本塊:

My site: http://www.mysite.com,
drop me an email at foo@bar.com

我想替換網址和電子郵件地址以將文本轉換為鏈接。

然后,我將這種模式用於電子郵件:

text.replace(/([\w\-\+_]+(\.[\w\-\+_]+)*\@[\w\-\+_]+\.[\w\-\+_]+(\.[\w\-\+_]+)*)/gi, replacement);

及以下網址格式:

text.replace(/((https?:\/\/)?[\w-]+(\.[\w-]+)+\.?(:\d+)?(\/\S*)?)/gi, replacement);

但是url模式搞砸了我的電子郵件模式,最后的結果變為:

<a href="mailto:foo@<a href="bar.com">bar.com</a>>bar.com</a>

對於這種情況,是否有更好的模式?

謝謝

我建議您使用此正則表達式:

/(\b(?:ht|f)tps?:\/\/.+\b)|(\b[\w.]+@(?=.*?\.)[\w.]+\b)/g

並替換為:

<a href="$1$2">$1$2</a>

演示

好吧,我認為您的核心問題是您的“ URL”模式還包含一個“ @”,因此它也會與您的電子郵件地址“匹配”。

但是,我也建議您的模式過於復雜。 就像是:

電子郵件模式應類似於:

[\\瓦特+] + \\ @ [\\瓦特] +

網址格式如下:

HTTPS:// [\\ w] +

它不會捕獲某些更不常見的異常,但可以捕獲其他可以用於URL的有效模式(例如,后者不會捕獲CGI GET的URL)。 兩者均未真正驗證數據。 但是,您實際上首先不需要正則表達式。

暫無
暫無

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

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