Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在javascript正则表达式中使用javascript变量_Javascript_Regex - Fatal编程技术网

在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'); 基本上,我

我刚刚习惯正则表达式,不确定如何在其中使用JavaScript变量

我的代码是:

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');
或:

  • JavaScript不做PHP风格的字符串插值。你必须说
    ”#内容a[href^='+sURLDomain+']'

  • JavaScript变量以
    $
    开头是不常见的。有些人使用它作为一种“匈牙利符号”样式的标志,表明变量是来自jQuery或其他库的包装器对象。这是否是一个好主意还存在争议,但无论哪种方法,都不要在变量前面加上
    $
    ,因为PHP就是这样做的

  • [^=…]
    选择器检查文本字符串属性值的开头。与问题标题相反,这里没有正则表达式。与正则表达式的唯一联系是使用
    ^
    表示“字符串的开头”

  • 如果URL中有一个特定于选择器的字符,例如
    ]
    \
    ,则缺少转义意味着选择器表达式将中断。在这种特殊情况下可能不太可能,但如果说:


  • 请清洁键盘:
    似乎卡住了。哎!我在键入…等…时遇到了一个怪癖,即属性选择器
    [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');