簡體   English   中英

jquery正則表達式匹配url和電子郵件

[英]jquery regex to match urls and email

我有一個現有的 php 函數來檢測塊消息中的電子郵件和 url,然后按原樣替換它。 現在我需要在 php 中使用相同的函數,但我無法正確使用正則表達式。 有人可以幫忙嗎?

<?php
function replace_chat_tags($chat_body=''){
     $chat_body = preg_replace('!(http|ftp|scp)(s)?:\/\/[a-zA-Z0-9.?=\-&_/]+!', "<a href=\"\\0\" target=\"_blank\">\\0</a>", $chat_body);
     $chat_body = preg_replace('/\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b/si', "<a href=\"mailto:\\0\">\\0</a>", $chat_body);
     $chat_body = str_replace(array("&lt;br/&gt;"), "<br/>", $chat_body);
     return $chat_body;
 }
?>

在js中

<script>
function replace_chat_tags(chat_body){
var chat_body;
  chat_body.replace(); //For urls
  chat_body.replace(); // Email Link
  chat_body.replace(); // I need this for a reason
  return chat_body;
}
</script>

您可以使用例如regex101在線測試正則表達式。 它也提供了 JavaScript 風格。

反正:

 function replace_chat_tags(chat_body = '') { return chat_body .replace( /((http|ftp|scp)(s)?:\\/\\/[a-zA-Z0-9.?=\\-&_/]+)/g, "<a href=\\"$1\\" target=\\"_blank\\">$1</a>" ) .replace( /\\b([A-Z0-9._%+-]+@[A-Z0-9.-]+\\.[AZ]{2,4})\\b/gi, "<a href=\\"mailto:$1\\">$1</a>" ) .replace( /&lt;br\\/&gt;/g, "<br/>" ); } console.log( replace_chat_tags( 'hello http://www.google.com foo@bar.com&lt;br/&gt;foo&lt;br/&gt;' ) );

不要忘記使用.innerHTML將其附加到您的元素中。 並確保不允許<script><a href="javascript:*">和任何<* on*="*">標簽。

我還建議只實施一次。 使用 PHP 或 JS 轉換您的聊天消息。

暫無
暫無

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

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