6350


現在は

[code]

    str = "url(http://exapmle.com)"
    str.split("(")[1].split(")")[0] => "http://exapmle.com"
    
[/code]

等としていますが、もうちょっとスマートな方法があるような気がします。


CC BY-SA 3.0
2015-02-12T02:45:04.227
6349
2015-02-12T03:32:40.613
525
question
javascript html
”url(http://exapmle.com)”からurlを取り出すスマートな方法。


括弧があっても大丈夫なように書換え。マッチしなければ、元の文字列をそのまま返します。

[code]

    var str = "url(https://msdn.microsoft.com/en-us/library/ie/ms534359(v=vs.85).aspx)";
    var m = str.match(/^url\((.*)\)$/i);
    var url = m ? m[1]: str;
    // => "https://msdn.microsoft.com/en-us/library/ie/ms534359(v=vs.85).aspx"
    
[/code]


CC BY-SA 3.0
2015-02-12T03:01:09.963
6350
2015-02-12T03:01:09.963
4978
6349
answer


`replace`を使います。

`str.replace(/^url\\((.*)\\)$/g,"$1")`


CC BY-SA 3.0
2015-02-12T03:02:38.127
6351
2015-02-12T03:18:27.917
2015-02-12T03:18:27.917
7214
7214
6349
answer


`slice`を使います

`str.slice(4,-1)`


CC BY-SA 3.0
2015-02-12T03:19:32.630
6353
2015-02-12T03:19:32.630
5044
6349
answer


多少お節介ではありますが、用途を推察するに URL に引用符がついている可能性を考慮したほうがよいかもしれません。  
その場合は、正規表現を利用して、以下のようにするとよいでしょう。

[code]

    str.replace(/^url\(\s*(?:(["'])(.*)\1|((?:[^\(\)]|\\\(|\\\))*))\s*\)$/, "$2$3");
    
[/code]

引用符が存在しない場合、URI に 括弧を含めるには、 "\" でエスケープする必要があります。  
<http://www.w3.org/TR/CSS2/syndata.html#uri>  
ただし、上記のコードサンプルの場合、置換後にもエスケープ文字が残ってしまいます。


CC BY-SA 3.0
2015-02-12T03:32:40.613
6354
2015-02-12T03:32:40.613
8237
6349
answer