$1で中身を展開できると思ったのですが
$1という文字列に置換させてしまいます
原因がわかる方いらっしゃいませんでしょうか
<script> window.onload=function(){ s="a1-1 a2-2 a3-3"; if(s.match(/a[0-9]+-[0-9]+/g)){ s=s.replace(/a[0-9]+-[0-9]+/g,'$1'); alert(s); } } </script>
>$1で中身を展開できると思ったのですが
根拠は何でしょう。
> 中身を展開できる
中身、とはなんでしょうか。
質問文のコードで具体的にどういう結果になることを期待したのですか?
replaceで指定した正規表現、それにマッチした答えが、$1に入ると思っていましたが。。。
s=s.replace(/a[0-9]+-[0-9]+/g,'$1');
a1-1 a2-2 a3-3がマッチするので
sのa1-1 a2-2 a3-3が$1の指定でa1-1 a2-2 a3-3となり、
alertでa1-1 a2-2 a3-3が出ると考えていましたが$1になってしまいます
>思っていましたが。。。
ですから、根拠は何でしょう。
考察の出典明示してください。
var text = '<p>あいうえおかきくけこhttp://google.com</p>';
text = text.replace(/(http(s)?:\/\/[a-zA-Z0-9-.!'()*;/?:@&=+$,%#]+)/gi, "<a href='$1' target='_blank'>$1</a>");
console.log(text);
とした場合に$1にはURLが入るのに、なぜ
s=s.replace(/a[0-9]+-[0-9]+/g,'$1');では入らないのかわからない
> sのa1-1 a2-2 a3-3が$1の指定でa1-1 a2-2 a3-3となり、
そもそも replace() で何もして欲しくないということでしょうか。それなら replace() の行を消せばよいのでは。
何もしてないわけでなく、$1で出力できる書き方をしたので
結果変わらないように見えても$1でa1-1 a2-2 a3-3と出るように書きたかったのです
うーん。回答する立場としては、replace()を使うことよりもベターな方法も考えたいので、あまり意味のない処理が例示されていると困惑します。
回答1件
あなたの回答
tips
プレビュー