我已经看过this,这对一点很有帮助。jquery match()可变插值 - 复杂正则表达式
这是问题所在。我有通过用户点击传播到元素的用户列表;是这样的:
<div id="box">
joe-user
page-joe-user
someone-else
page-someone-else
</div>
点击之后,我想,以确保用户尚未卡入格。所以,我做这样的事情:
if (! $('#box').html().match(rcpt))
{
update_div();
}
else
{
alert(rcpt+' already exists.');
}
然而,与现有的缺乏是JavaScript有正则表达式的插值,引起我的警觉在选择page-joe-user
用例来触发,然后用户选择joe-user
,显然不完全一样。
在Perl我会做这样的事情:
if ($rcpt =~ /^\Qrcpt\E/)
{
# code
}
所有我想要做的就是改变我的比赛()是:
if (! $('#box').html().match(/^rcpt/))
{
# code
}
if (! $('#box').html().match(rcpt))
似乎有点前途的,但它也失败。使用new RegExp()
也不能在函数IE $('#box').html().match(new RegExp('^'+rcpt))
中使用复杂RE语法的串联工作。我也试过$('#box').html().match('/^'+rcpt'/')
。我只能想象我错过了什么。我很新的JavaScript。
我似乎无法找到任何真正解决这种用例的东西,在这个网站上。
TIA
'rcpt'实际上并不是我代码中的一个对象。这只是一个变量。不过,我正在考虑将您的回应作为解决此问题的一种方法。 – Jim 2009-12-24 02:24:18
如果'rcpt'是一个变量,只需删除引号。请注意,这是区分大小写的。如果你不想要,请调用'toUpperCase'。 – SLaks 2009-12-24 02:35:21
恩,看,那正是我所做的。然而,问题在于match()将'joe-user'和'page-joe-user'混淆。所以,要复制的问题... 使用'页面乔user'和'乔 - user'例如:。 '$( '#元素')HTML()的比赛(RCPT)'主要作品但是如果我先点击'page-joe-user',然后尝试点击'joe-user',然后匹配()会触发匹配,事实上并不是(或者不希望它们是)。如果我按相反的顺序点击它们,那么一切运作良好。所以,为了缓解,我想锚定我的正则表达式,因为这看起来像典型的正则表达式贪婪。 – Jim 2009-12-24 02:48:33