2

JavaScript の replace() 関数を使用して、AZ、az、0-9、ダッシュ (-)、アンダースコア (_)、およびドット (.) に一致する正規表現を置き換えています。一致した文字列の一部をタグで置き換えようとしていますが、私が持っているコードは一致したものを <b>$1</b> に置き換えるだけです。

何か助けてください。

<!DOCTYPE html>
<html>
<body>

<textarea id="demo" rows="10" cols="20">
<table></table>
<b><i>#stock-jsod.20</i>
</b>
</textarea>

<button onclick="testit()">test</button>

<script type="text/javascript">

function testit()
{
var str=document.getElementById("demo").value;
var n = str.replace(/#([A-Za-z0-9_.-]+)/gi, "<b>$0</b>");
document.getElementById("demo").innerHTML=n;
}
</script>

</body>
</html>

ここでの私の目標は #stock-jsod.20 を<b>#stock-jsod.20</b>に置き換えることですが、現在は<b>$0</b>.

4

2 に答える 2

2

$&「 」の代わりに「 」を使用してみてください$1

look の詳細 -> https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String/replace#Description

UPDATE : 代わりに、' ' 要素の内容を取得するためdocument.getElementById("demo").valueに使用する必要があります。document.getElementById("demo").innerHTMLdemo

于 2012-06-24T18:41:16.027 に答える
1

エンジニアの回答に加えて、A-Za-z0-9_. あなたはただ使うことができます\w。次に、大文字と小文字を区別しないスイッチも必要ありません。これは、同じ効果を実現するより単純な正規表現です。

var n = str.replace(/#[\w.-]+/g, "<b>$&</b>");

出力例:

> str = '#abc #def ghi'
"#abc #def ghi"
> str.replace(/#[\w.-]+/g, "<b>$&</b>");
"<b>#abc</b> <b>#def</b> ghi"
于 2012-06-24T18:41:11.713 に答える