Javascript:配列を元に全て置換・マークアップをしたいのですが、無理なんでしょうか。

 
function marker(){
word = new Array("たる", "をかし");
input= document.form1.ta.value;
for (var i=0; i<=word.length; i++ )
{
input = input.replace(/word[i]/g ,'<span class=check1>'+ word[i] +'</span>');
}
}
のようにして配列の単語を全てマークアップしようとしたのですが、置換されません。
こんなです。 http://www.lawdata.org/etc/hairetsuchikan.htm
「/word[i]/g」を「word[i]」にすると最初の一つずつだけマークアップされます。
これは無理なんでしょうか?

回答の条件
  • 1人5回まで
  • 登録:2006/09/22 20:29:03
  • 終了:2006/09/23 23:43:12

ベストアンサー

id:susie-t No.3

susie-t回答回数99ベストアンサー獲得回数182006/09/22 23:11:02

ポイント320pt

既出かもしれませんが・・・。

input = input.replace(new RegExp('(' + word[i] + ')', 'g') ,'<span class=check1>$1</span>'); 

でどうでしょうか。

「/~/g」の間に書くのは実際の文字なので、このままだと「wordi」という文字を置換しようとします([]はまた別の意味を持つ)。変数内の文字を使用したい場合は、上のように「new RegExp(変数,'g')」等とします。

()で括った中の文字は、置換文字側で$1等で参照できます。・・・あ、ここはもとのままでもいいですが^^;

参考になれば幸いです。

id:washita

丁寧にありがとうございます。

 

どうしたらこういうことを人に聞かなくてもわかるようになれるんでしょうか・・・

2006/09/23 23:41:11

その他の回答(2件)

id:ardarim No.1

ardarim回答回数897ベストアンサー獲得回数1452006/09/22 21:07:00

ポイント300pt

これでどうでしょうか。

    re = new RegExp(String(word[i]),"g");
    input = input.replace(re,'<span class=check1>'+ word[i] +'</span>'); 
id:washita

ありがとうございます。

2006/09/23 23:41:16
id:tikirou No.2

tikirou回答回数80ベストアンサー獲得回数82006/09/22 22:00:09

ポイント300pt

for分の中を以下のように変更するとうまく動作します。

ご確認下さい。

reg = new RegExp(word[i],"g");

input = input.replace(reg,''+ word[i] +'');

id:washita

ありがとうございます。

こういう知識はどこで身につければいいんでしょうか・・・

2006/09/23 23:41:14
id:susie-t No.3

susie-t回答回数99ベストアンサー獲得回数182006/09/22 23:11:02ここでベストアンサー

ポイント320pt

既出かもしれませんが・・・。

input = input.replace(new RegExp('(' + word[i] + ')', 'g') ,'<span class=check1>$1</span>'); 

でどうでしょうか。

「/~/g」の間に書くのは実際の文字なので、このままだと「wordi」という文字を置換しようとします([]はまた別の意味を持つ)。変数内の文字を使用したい場合は、上のように「new RegExp(変数,'g')」等とします。

()で括った中の文字は、置換文字側で$1等で参照できます。・・・あ、ここはもとのままでもいいですが^^;

参考になれば幸いです。

id:washita

丁寧にありがとうございます。

 

どうしたらこういうことを人に聞かなくてもわかるようになれるんでしょうか・・・

2006/09/23 23:41:11
  • id:susie-t
    たくさんポイントを頂いて恐縮です。。。
    JavaScriptの正規表現についてですが、とりあえず、以下のサイトで基本は抑えられると思います。
    http://pzxa85.hp.infoseek.co.jp/www/wwwjsreg.htm
    あとは慣れですねw
    (すみません、削除・書き直しを繰り返しました・・・)
  • id:ardarim
    とりあえずJavaScriptの入門書などがよいのではないでしょうか。


    私の場合はたぶん参考になりませんが、JavaScriptの仕様書(<a href="http://www.ecma-international.org/publications/standards/Ecma-262.htm" target="_blank">ECMA-262</a>;<a href="http://www2u.biglobe.ne.jp/~oz-07ams/prog/ecma262r3/" target="_blank">邦訳版</a>)をバイブルにしています。技術者向けの資料なので分かりやすいとは決していえませんのでお勧めはできませんが、仕様書なのですべての機能が網羅されています。


    私も正規表現は詳しくないほうですが今回改めて仕様書を読み返しました...

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません