jQuery如果string包含链接返回链接值

时间:2017-05-20 21:27:38

标签: jquery href

使用正则表达式检查字符串是否有链接

<p>Random text <a href="/landing.html">click here</a></p>
<p>Another paragraph without href</p>

如果为true则返回字符串并使用str.find("a").attr("href");来获取href值。

var str = $('p').html();
if(new RegExp("([a-zA-Z0-9]+://)?([a-zA-Z0-9_]+:[a-zA-Z0-9_]+@)?([a-zA-Z0-9.-]+\\.[A-Za-z]{2,4})(:[0-9]+)?(/.*)?").test(str)) {
    console.log(str);
    var href = str.find("a").attr("href");
}

但是,console.log返回错误

  

未捕获的TypeError:str.find不是函数

检查 提前Link Jsfiddle

2 个答案:

答案 0 :(得分:0)

上面代码的问题是你使用.html()方法,因为html返回html部分而不是dom对象。您需要使用dom选择器对象来查找锚点。将您的代码更新到下面

var str = $('p');
console.log(str)
if(new RegExp("([a-zA-Z0-9]+://)?([a-zA-Z0-9_]+:[a-zA-Z0-9_]+@)?([a-zA-Z0-9.-]+\\.[A-Za-z]{2,4})(:[0-9]+)?(/.*)?").test(str.html())) {
    console.log(str);
    var href = str.find("a").attr("href");
  console.log(href)
}

检查小提琴updated fiddle

答案 1 :(得分:0)

更改
var href = str.find("a").attr("href");
对于
var href = $('p').find("a").attr("href");

您收到此错误是因为您尝试在“字符串”中调用方法“find”,而该字符串没有该方法。

var str = $('p').html();
if(new RegExp("([a-zA-Z0-9]+://)?([a-zA-Z0-9_]+:[a-zA-Z0-9_]+@)?([a-zA-Z0-9.-]+\\.[A-Za-z]{2,4})(:[0-9]+)?(/.*)?").test(str)) {
	console.log(str);
	var href = $('p').find("a").attr("href");
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<p>Random text <a href="/landing.html">click here</a></p>
<p>Another paragraph without href</p>