2

HTML 文字列があり、単一引用符で設定されている html 属性のインスタンスを二重引用符で置き換えたいと考えています。

たとえば、私は交換したい

<script src='foo.js'></script>

<script src="foo.js"></script>

ただし、javascript ステートメントまたは html 内のテキストに含まれる単一引用符に影響を与えずにこれを実行したいと考えています。

例えば

<script> var foo = '67'; </script> 

影響を受けず、

<div id='foo'> 'hi' </div>

なるべき

<div id="foo"> 'hi' </div>

これを行う簡単な方法はありますか?

特定の要素に対してjqueryで選択し、そのouterHTMLを読み取るとこれが行われますが、htmlのページ全体に対して一度に実行したいと考えています。

ありがとう!

4

2 に答える 2

1

これを試して:

var str = "<br style   = 'width:100px'/>   test link<a href=\"http://www\"></a>";
var regex = /<\w+\s*(\w+\s*=\s*(['][^']*['])|(["][^"]*["]))*\s*[\/]?>/g;
var rstr = str.replace(regex, function($0,$1,$2){
    return $0.replace($2, $2.replace(/'/g, '"'));
});
console.log('replaced string = ' + rstr);

あなたのケースに厳密に一致するようにそれをrefectorすることができます。

于 2012-11-14T05:17:37.427 に答える
1

これに対する最も簡単な解決策は、このフィドルに示されているものであり、jquery または regexps を必要としないと思うので、私自身の質問に答えます。

http://jsfiddle.net/QdUR5/1/

<html id="foo"></html>​
var htmlString = 
  '<head>' +
  '<script type="text/javascript" src=\'main.js\'></scr' + 'ipt>' +
  '</head>' +
  '<body onload=\'onLoad()\'>' +
  '</body>' ;

document.getElementById('foo').innerHTML = htmlString;
console.log(document.getElementById('foo').outerHTML);

</p>

基本的に、html 要素の内側の html を html タグなしで html 文字列に設定し、html 要素の外側の html を出力するだけです。

それは素晴らしい正規表現マイクですが、正規表現を使用するよりも少し簡単だと思います:)

于 2012-11-14T05:21:34.110 に答える