Javascript 如何将jquery attr值转换为字符串对象以将其用作正则表达式?

Javascript 如何将jquery attr值转换为字符串对象以将其用作正则表达式?,javascript,jquery,regex,string,attr,Javascript,Jquery,Regex,String,Attr,我想搜索字符串变量,如果它包含jQuery对象的attr值。我试过: var txt = "lets go to a.html"; var searchText = new RegExp($("#link").attr("href")); alert(txt.search(searchText)>=0); 但这总是返回false。 我确信$(“#link”).attr(“href”)会将“a.html”作为值返回。 如果我做错了什么我也试过 var txt = "lets go to a

我想搜索字符串变量,如果它包含jQuery对象的attr值。我试过:

var txt = "lets go to a.html";
var searchText = new RegExp($("#link").attr("href"));
alert(txt.search(searchText)>=0);
但这总是返回false。 我确信$(“#link”).attr(“href”)会将“a.html”作为值返回。 如果我做错了什么我也试过

var txt = "lets go to a.html";
var searchText = new RegExp("a.html");
alert(txt.search(searchText)>=0);
这一次又回到了现实。 我认为jquery没有返回字符串对象,我尝试将其转换为字符串,如下所示:

var txt = "lets go to a.html";
var searchText = new String($("#link").attr("href"));
searchText = new RegExp(searchText);
alert(txt.search(searchText)>=0);
<a href="a.html ">
这也返回了false

当我使用toString($(“#link”).attr(“href”)时,它总是返回true,即使attr值不是“a.html”

有人能帮我吗? 多谢各位

这样做:

var txt = "lets go to a.html";
var searchText = $("#link").attr("href");
alert(txt.indexOf(searchText) !== -1);

要从字符串创建正则表达式,请执行以下操作:

var re = new RegExp('your string');
要查看它是否与另一个字符串匹配,请执行以下操作:

re.test('another string');       // false
re.test('here is your string');  // true
但请注意,某些字符必须转义,以便匹配空白:

var re = new RegExp('\\s');
在您的情况下,您应该颠倒测试的意义:

searchText.test(txt)

如果“a.html”在txt中,则返回true。

根据您在href属性中测试的浏览器,通过jQuery查询时,将返回完全限定的url,即使您已将其设置为相对url


测试以确保
$('#link').attr('href')
实际返回
a.html
,而不是
http://url/a.html

好的,问题解决了,我必须向所有花时间解决这个问题的人说声抱歉 问题出现在我的html上:( 我在href属性中放置了一个emty字符,如下所示:

var txt = "lets go to a.html";
var searchText = new String($("#link").attr("href"));
searchText = new RegExp(searchText);
alert(txt.search(searchText)>=0);
<a href="a.html ">


我给出的代码都工作得很好:)

因为正则表达式不像搜索文本或字符串,它们应该类似于
/\s/
来查找空间等等。您确定要使用URL作为正则表达式吗?这似乎很奇怪。您可以使用.indexOf来搜索字符串。如果第二个示例工作正常,那么当文本来自jquerys attr()函数时,为什么它不工作?jQuery会混淆属性和属性(IE也是如此)。即使属性值为“a.html”,使用attr('href')也可能返回完整的路径名,而不是实际值。attr方法不是get/setAttribute的假名。这里的问题在于这个变量re=new RegExp(“您的字符串”);它不仅是这样的,而且当它是这样的时候,这个表达式会工作得很好:re=newregexp($(“#link”).attr(“href”);顺便说一下,什么是test()函数,它不起作用?test方法返回true或false,这取决于正则表达式是否匹配字符串的任何部分。例如/a/.test('cat')//trueIt意味着
searchText
不等于
“a.html”
。这取决于jQuery版本,但您是对的,它已被修复。