所以我在这里有这个功能:
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找到解决方案。
答案 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网址,并将网址转换为链接。