0

HTMLコードの前後に余分なスペースを取得せず、タグやタグ属性を取得せずに、大文字と小文字を区別して文字列「Target」のみを選択しようとしています。
私はこの正規表現を持っています:

/(?![^<>]*>) *(Target) *([^ \d])/g

これは、:Targetの複数のオカレンスを取得しますが、前後の余分なスペース、それに続く最初の文字、またはその後の余分な空白も取得します。 どうすればこれを完成
<div id="Target">text Target othertext</div>せることができますか?Target o

4

1 に答える 1

0

正規表現の処理に使用しているものによっては、複数のキャプチャグループを使用していることが原因である可能性があります。?:他のキャプチャグループの前に:を付けることで、他のキャプチャグループを非キャプチャに変更します。

/(?:?![^<>]*>) *(Target) *(?:[^ \d])/g

編集:

コメントからの追加情報で、これはうまくいかないでしょうか?

var str="<div id=\"Target\">text Target othertext</div>";
str = str.replace(/Target/g,"New!");

編集#2:

これは、元の正規表現で始まり、このStackOverflow投稿からの情報を使用するパスです:

var str="<div id=\"Target\">text Target othertext</div><Target test=\"nothing\">Target this is Targeted.</Target>";
alert(str.replace(/(?![^<>]*>)( *)Target( *[^ \d])/g,function(str,group1,group2){return group1 + "NEW!" + group2;}));

私はそれを自分でテストしました、そしてそれはあなたが必要とすることをするようです...または少なくともあなたをさらに前進させます。

于 2012-11-27T19:34:12.427 に答える