人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

javascript の正規表現で、先頭から特定の単語までを置き換えする方法を探しています。

例えば、

------------------
なんたらかんたら<br>
すたこらさっさ<br>
------------------


というときに

”先頭から<br>”より前の文字を変更したいのです。
(この場合特定の単語とは”<br>”のこと)

------------------
変更後<br>
変更後<br>
------------------

hoge = hoge.replace('ここが知りたい', '変更後');

変更は最初にマッチする特定の単語、1回きりでOKです。

説明が悪いかも知れませんが、よろしくお願いします。

●質問者: tontonpokopoko
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:hoge JavaScript マッチ 単語 正規表現
○ 状態 :終了
└ 回答数 : 5/5件

▽最新の回答へ

1 ● a-kuma3
●0ポイント

これで良い?

.*\<br\>

2 ● a-kuma3
●100ポイント ベストアンサー

質問を読み直してて気が付いたんだけど、正規表現じゃなくて、replace メソッドの使い方を間違ってるからできないんじゃない?

第一引数は文字列じゃないよ。

var s = "なんたらかんたら<br>"
ss = s.replace(/.*\<br\>/, "変更後<br>")

それとも、特定の単語を置き換えるときに引っ張ってくる方法が分からない?

var s = "なんたらかんたら<br>"
ss = s.replace(/.*(\<br\>)/, "変更後$1")

さっきの書き方だと、特定の単語が複数はいってると、最後の一つだけを取り出してしまうので、特定の単語を必ず残したいなら、

var s = "なんたらかんたら<br>すたこらさっさ<br>"
ss = s.replace(/.*?(\<br\>)/, "変更後$1")

これでは、最初のひとつしか置き換えられないので、全部置き換えるには、

var s = "なんたらかんたら<br>すたこらさっさ<br>"
ss = s.replace(/.*?(\<br\>)/g, "変更後$1")
◎質問者からの返答

回答をありがとうございます。質問が悪くてすいません。


を変更したいのではなく、

”なんたらこうたら” を変更したいのです。

”なんたらこうたら”は、未確定(ユーザが書き込む等)で、

先頭から
の、間の不確定な文字を変更したいのです。

上記の場合だと
が変更されますよね?


3 ● rikuba
●100ポイント

前方先読み((?=))を使うのはどうでしょう。

"なんたらかんたら<br>\nすたこらさっさ<br>".replace(/.+?(?=<br>)/, "変更後");
◎質問者からの返答

今試していますが、マッチしないようで何も起こりません。

もう少しいろいろと試してみます。


4 ● rikuba
●0ポイント

すみません。先ほどの回答でグローバルマッチのgフラグを忘れていました。

/.+?(?=<br>)/g

今試していますが、マッチしないようで何も起こりません。

ひと通りのブラウザで試してみたのですが、問題ありませんでした。よろしければ環境をお教えください。

◎質問者からの返答

質問が悪くて申し訳ありませんでした。

わざわざテスト用のページを作ってくださり本当に感謝です!


5 ● Galapagos
●100ポイント

こんな感じでいかがでしょう。

「変換」ボタンをクリックしてみてください。

<html>
<head>
<script tyle="text/javascript">
function hoge() {
 var pat = /^([^<]*)/; //置換パターン
 var rep = "変換後"; //置換後文字列
 var s1 = document.getElementById("hogetxt").value;
 var s2 = s1.replace(pat, rep);
 document.getElementById("hogetxt").value = s2;
}
</script>
</head>
<body>
<form>
<textarea id="hogetxt" cols="40" rows="3">
なんたらかんたら<br>
すたこらさっさ<br>
</textarea>
<br />
<input type="button" onClick="hoge()" value="変換" />
</form>
</body>
</html>
◎質問者からの返答

コードを書いてくださり、助かりました。

今後も参考にさせていただきます。またよろしくお願いします。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ