Javascript 如何查找文本是否包含url字符串
如何查找文本是否包含url字符串。我是说如果我有Javascript 如何查找文本是否包含url字符串,javascript,Javascript,如何查找文本是否包含url字符串。我是说如果我有 Sometexthttp://daasddas some text 我希望通过javascript存储或制作为链接您必须使用正则表达式(regex)在文本块中查找URL模式 以下是指向相同问题和答案的链接: 您可以使用正则表达式查找URL,并将其替换为前导和尾随标记函数replaceurlwithhtmlinks(text) function replaceURLWithHTMLLinks(text) { var e
Sometexthttp://daasddas some text
我希望通过javascript存储或制作为链接您必须使用正则表达式(regex)在文本块中查找URL模式
以下是指向相同问题和答案的链接:
您可以使用正则表达式查找URL,并将其替换为前导和尾随标记
函数replaceurlwithhtmlinks(text)
function replaceURLWithHTMLLinks(text)
{
var exp = /(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig;
return text.replace(exp,"<a href='$1'>$1</a>");
}
{
var exp=/(\b(https?| ftp |文件):\/\/[-A-Z0-9+&@#\/%?=~~|!:,.;]*[-A-Z0-9+&@#\/%=~|]/ig;
返回文本。替换(exp,“”);
}
而如果所有给定的URL都已满,则上述代码工作正常(http://mydomain.com),我在解析URL时遇到问题,如:
www.mydomain.com
i、 e.没有协议。
因此,我在函数中添加了一些简单的代码:
var exp = /(\b(((https?|ftp|file|):\/\/)|www[.])[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig;
var temp = text.replace(exp,"<a href=\"$1\" target=\"_blank\">$1</a>");
var result = "";
while (temp.length > 0) {
var pos = temp.indexOf("href=\"");
if (pos == -1) {
result += temp;
break;
}
result += temp.substring(0, pos + 6);
temp = temp.substring(pos + 6, temp.length);
if ((temp.indexOf("://") > 8) || (temp.indexOf("://") == -1)) {
result += "http://";
}
}
return result;
var exp=/(\b(((https?;ftp | file |)):\/\/)(www[。])[-A-Z0-9+&@#\/%?=~|!:,.;]*[-A-Z0-9+&@#\/%=~|]/ig;
var temp=text.replace(exp,“”);
var结果=”;
而(温度长度>0){
var pos=temp.indexOf(“href=\”);
如果(位置==-1){
结果+=温度;
打破
}
结果+=温度子串(0,位置+6);
温度=温度子串(位置+6,温度长度);
如果((临时索引(“:/”)大于8)| |(临时索引(“:/”==-1)){
结果+=“http://”;
}
}
返回结果;
如果有人需要更好的解决方案来为URL添加默认协议,请告诉我!我调整了设置,以便可以找到嵌入字符串中的URL。它不会找到google.com,如果是用户输入字段,这是必需的,用户可能会在句点/句点后省去空白。它还会找到wwww.google.com,因为几乎没有人输入协议
(?:((?:https?|ftp):\/\/)|ww)(?:\S+(?::\S*)?@)?(?:(?!(?:10|127)(?:\.\d{1,3}){3})(?!(?:169\.254|192\.168)(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z\u00a1-\uffff0-9]-*)*[a-z\u00a1-\uffff0-9]+)(?:\.(?:[a-z\u00a1-\uffff0-9]-*)*[a-z\u00a1-\uffff0-9]+)*(?:\.(?:[a-z\u00a1-\uffff]{2,}))\.?)(?::\d{2,5})?(?:[/?#]\S*)?
我对它进行了测试,它对我很有效,如果你遇到问题,请发表评论。许多解决方案开始变得非常复杂,难以处理各种情况。我创建了一个函数来捕获任何以http/https/ftp/file/www开头的URL。这对我来说很有吸引力,唯一的一点是它没有添加指向我的链接用户在开始时输入的URL没有http或www(即google.com)。我希望此解决方案对某些人有所帮助
function convertText(txtData) {
var urlRegex =/(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig;
txtData = txtData.replace(urlRegex, '<a href="$1">$1</a>');
var urlRegex =/(\b(\swww).[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig;
txtData = txtData.replace(urlRegex, ' <a href="$1">$1</a>');
var urlRegex =/(>\swww)/ig;
txtData = txtData.replace(urlRegex, '>www');
var urlRegex =/(\"\swww)/ig;
txtData = txtData.replace(urlRegex, '"http://www');
return txtData;
}
函数转换文本(txtData){
var urlRegex=/(\b(https?| ftp |文件):\/\/[-A-Z0-9+&@#\/%?=~|!:,.;]*[-A-Z0-9+&@#\/%=~|]/ig;
txtData=txtData.replace(urlRegex.);
var urlRegex=/(\b(\swww)。[-A-Z0-9+&@#\/%?=~|!:,.;]*[-A-Z0-9+&@#\/%=~|]/ig;
txtData=txtData.replace(urlRegex.);
var urlRegex=/(>\swww)/ig;
txtData=txtData.replace(urlRegex,'>www');
var urlRegex=/(\“\swww)/ig;
txtData=txtData.replace(urlRegex,“)http://www');
返回txtData;
}
函数replaceurlwithhtmlinkhere(文本)
{
var exp=/(\b(https?| ftp |文件):\/\/[-A-Z0-9+&@#\/%?=~~|!:,.;]*[-A-Z0-9+&@#\/%=~|]/ig;
返回文本。替换(exp,“”);
}
好的,我们在函数中得到了这个正则表达式
/(\b(https?| ftp |文件):/[-A-Z0-9+&@#/%?=~!:,.;]*[-A-Z0-9+&@#/%=~)/ig
让我们理解这一点
//这是正则表达式的启动方式
\b>正在处理唯一且位于字符串开头的https或ftp或文件。这些关键字在中不应附加任何字符
从bbhttps或bbhttp开始,否则它将与这些不匹配
https?>此处?表示零或前面的字符或组之一。在这种情况下,s是可选的
|>匹配给定的一个,就像或一样
()>创建要匹配的组
/>表示下一个字符是特殊的,不能按字面解释。例如,前面没有“\”的“b”通常匹配小写
“b”出现在任何地方。但a'\b'本身与任何字符都不匹配
[]>这是字符类或字符集。它用于有一组字符,并且一次只能出现一个字符
[-A-Z0-9+&@#/%?=~|!:,.;]*>前面元素的出现次数为零或更多。例如,b*c与“c”、“bc”、“bbc”、“bbbc”等匹配
[-A-Z0-9+&@#/%=~|]>表示所有字符中的一个字符
i>不区分大小写的搜索。
g>全局搜索。函数replaceURLWithLinks(文本){
function replaceURLWithLinks(text){
var text = "";
text= text.replace(/\r?\n/g, '<br />');
var result = URI.withinString(text, function(url) {
return "<a href='"+url+"' target='_blank'>" + url + "</a>";
});
}
var text=“”;
text=text.replace(/\r?\n/g,
);
var result=URI.withinString(文本、函数(url){
返回“”;
});
}
但是兄弟,还有一个例子,如果有人键入mydomain.com,这里的$1是多少。
function replaceURLWithLinks(text){
var text = "";
text= text.replace(/\r?\n/g, '<br />');
var result = URI.withinString(text, function(url) {
return "<a href='"+url+"' target='_blank'>" + url + "</a>";
});
}