在javascript正则表达式中使用javascript变量
我刚刚习惯正则表达式,不确定如何在其中使用JavaScript变量 我的代码是:在javascript正则表达式中使用javascript变量,javascript,regex,Javascript,Regex,我刚刚习惯正则表达式,不确定如何在其中使用JavaScript变量 我的代码是: if (window.location.hostname == 'localhost') { var $sURLDomain = 'http://localhost/'; } else { var $sURLDomain = 'http://mysite.com'; } $('#content a[href^=$sURLDomain]').addClass('internal'); 基本上,我
if (window.location.hostname == 'localhost') {
var $sURLDomain = 'http://localhost/';
}
else {
var $sURLDomain = 'http://mysite.com';
}
$('#content a[href^=$sURLDomain]').addClass('internal');
基本上,我是根据我是在本地还是在实时url上设置变量$sURLDomain
然后,我想测试我的链接是否以$sURLDomain
变量开头,并使用jQuery仅向这些特定链接添加一个类
这似乎不起作用,因此我不确定如何实现这一点。尝试以下方法:
$('#content a[href^="'+$sURLDomain+'"]').addClass('internal');
或:
”#内容a[href^='+sURLDomain+']'
$
开头是不常见的。有些人使用它作为一种“匈牙利符号”样式的标志,表明变量是来自jQuery或其他库的包装器对象。这是否是一个好主意还存在争议,但无论哪种方法,都不要在变量前面加上$
,因为PHP就是这样做的[^=…]
选择器检查文本字符串属性值的开头。与问题标题相反,这里没有正则表达式。与正则表达式的唯一联系是使用^
表示“字符串的开头”]
或\
,则缺少转义意味着选择器表达式将中断。在这种特殊情况下可能不太可能,但如果说:
请清洁键盘:
似乎卡住了。哎!我在键入…等…时遇到了一个怪癖,即属性选择器[attr^=…]
不使用正则表达式进行比较。它使用简单的字符串比较。@HPDeveloper:如果需要筛选方法,则取决于$sURLDomain
的值。但是渲染是什么意思呢?JavaScript引擎在这段代码中没有呈现任何内容。第一个对我来说非常有用。谢谢…想知道如何识别不以sURLDomain变量开头的链接。。thanks@namtax:使用:not()
选择器:“#内容a:not([href^=“+$sURLDomain+”])”
.Ha.hostname
FTW()你喜欢
元素上这些晦涩难懂的属性,不是吗?晦涩难懂?!这是一个基本的JavaScript特性,可以追溯到Netscape 2,yer whippersnapper!;-)
$('#content a').filter(function() {
return this.href && this.href.substr(0, $sURLDomain.length) != $sURLDomain;
}).addClass('internal');
$('#content a[href^=$sURLDomain]').addClass('internal');
for (var i= document.links; i-->0;)
if (document.links[i].hostname===location.hostname)
$(document.links[i]).addClass('internal');