- ベストアンサー
Javascriptで文字列中の最後の"のみを消去するには?
Javascriptで"が最終文字に含まれた文字列から、それを取り除いた文字列を得る方法がどうしても分からないので、どうか教えてください。 例)「abcde"」→「abcde」 もしよろしければ「a"bcde"」→「a"bcde」といった「"」が途中に出てくるやり方もお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
(str.match(/http.+"/); コレ自体へんです。URLの書式を分かってないですね。'://'を忘れてませんか。 "で囲まれているのなら /"http:\/\/[^"]+"/ という感じでないといけないと思うのですが。 "で囲まれていないなら /http:\/\/[^ ]+/ てな感じ? いずれにしろ正規表現を考え直したほうがいいかと。 ※意図が違うのでしたらゴメン
その他の回答 (1)
replace()と正規表現を使います。 var replaced = 'abcde"'.replace(/"$/, ''); // abcde
お礼
回答ありがとうございます。 'と"を使い分けて正規表現のreplaceを使えばできるということは分かったのですが、 var elm = document.getElementById("xxx"); //それ以下のノード(?)にリンク含むIDのエレメントを取得する。 var str = elm.innerHTML; //リンクを含むHTMLを取得する。 str = (str.match(/http.+"/); //「~"html~"~」のHTMLから「html~"」を取得する。 str = str.replace(/"$/,''); //質問した部分です。 window.open(str); //新しいウインドウ/タブで開く。 eval(); といったのを考えているのですが、replaceを使う前に取得した文字列が "html~"" となっているためかうまくいきませんでした。 何とかうまくいくように出来ないでしょうか? 根本的に違う方法があればそれでもかまいません。 全くのJavascript初心者ですみません。 お願いします。
お礼
回答ありがとうございます。 str.match(/http:\/\/[^ ]+/); で完全にうまくいくようになりました。 http://~ に対しては/http:\/\/[^ ]+/でマッチさせるんですね。 とても勉強になります。 本当にありがとうございました。