检查文本区域以查找并将其更改为超链接

时间:2011-11-06 05:31:46

标签: javascript

所以我在这里有这个功能:

function ShowMessage()
{
   var themessege = document.getElementById("Form").textarea1.value;
   var dat = new Date(); 
   var fileName = document.getElementById("theFile").value;
   var image = '<img src="' + fileName + '"/>' + '<br>';
   document.getElementById("Form").textarea1.value = ""; 
   document.getElementById("Form").countdown.value = "160"; 
   document.getElementById("theFile").value = "";
   if (themessege==null || themessege=="") 
       {
       alert("There is no text to submit, please fill out the text box");
       return false;
       }

   document.getElementById("blog").innerHTML = document.getElementById("blog").innerHTML + image +  "Guest post: " + themessege + "<br />" +  dat +"<br />";   
}

我可以从文本区域获取文本,以及用户上传的图像。我想知道如何将文本区域中的字符串分成子标记以检查它们是以“www”还是“htt”开头。

这是我到目前为止所写的:

function linkify(inputText) {
   var replaceText, replacePattern1, replacePattern2;

   //URLs starting with http://, https://
   replacePattern1 =https;
   replacedText = inputText.replace(replacePattern1, '<a href= ></a>');

   //URLs starting with "www." (without // before it, or it'd re-link the ones done above).
   replacePattern2 = www.;
   replacedText = replacedText.replace(replacePattern2, <a href="http:  ></a>');
   var x = getelementbyid("blog");
   for(var i = 0;i < x.length;i++){
      if(blog.charAt(i) == replacePattern1){
      return replacedText;
      }
   }
   else if(blog.charAt(i) == replacePattern2){
     return replacedText;
   }
}

我知道charAt(i)只检查1个字母....

我发现的大部分答案都是关于PHP的,我正在尝试使用JavaScript找到解决方案。

2 个答案:

答案 0 :(得分:1)

linkify函数未正确写入。试试这个。

function linkify(inputText) {
var regUrl = /(http:[\d]{0,4}\/\/)?[a-zA-Z0-9\-\.]+\.(com|org|net|mil|edu|COM|ORG|NET|MIL|EDU)/;

return inputText.replace(regUrl,'<a href="" />');
}
;
alert(linkify('string containing link www.google.com'));// output: string containing link <a href="" />

答案 1 :(得分:0)

你的linkify功能都错了。所有变量都包含对不存在的变量的引用!在它们周围加上引号以使它们成为字符串。

replacedText = inputText.replace(replacePattern1, '<a href= ></a>');做了什么?

假设inputText为“https://example.com”并假设您更正了变量,那么replacePattern1 === 'https' 您找到https并将其替换为。最终产品是什么样的?

replacedText === '<a href= ></a>://example.com';

第二种替换模式也会发生同样的事情。

此外,没有像getelementbyid那样的东西。这是document.getElementById。 JavaScript区分大小写。它返回一个带有id的元素,因此你无法遍历它。

请在尝试编写JavaScript代码之前学习JavaScript。 Here's a good resource to start。另外,请阅读Douglas Crockford的JavaScript: The Good Parts


回答你的问题,这是你应该使用的代码:

string.replace(/(https?:\/\/[^\s]+)/g, "<a href='$1'>$1</a>")

https?表示http或https。 [^\s]+表示除空白字符之外的任何内容。 $1表示整个匹配的网址。 This is a good reference for Regular Expressions in JavaScript

这将允许包含字母和数字的https和http网址,并将网址转换为链接。

Demo