2017-07-05 20 views
0

は、次のコードを考えてみましょう:Javascriptの正規表現 - 文字列のHTMLからdivのIDを取得

const content = "<div id='x'><h2>Lorem Ipsum</h2> <p>is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s</p></div>" 

let ids = content.match(/id='(.*?)'/g).map((val) => { 
    return val.replace(/id='/g,''); 
}) 

をそして、私はconsole.log(ids)を行うときに - 私はこの'x\''ような出力を得るが、私は唯一の'x'を必要としています。私はどのようにその結果を達成するのだろうか、正規表現のシンボルを無作為に変更しようとしました。なぜなら正規表現はまったくわからないからです。

jqueryしないでください。事前にありがとう

+0

なぜあなたは、ID属性の最初の部分のみを交換しますか? – evolutionxbox

+0

正規表現はここでは役に立ちません。より洗練されたアプローチは、文字列を解析することです。 – KarelG

答えて

4

const content = "<div id='x'><h2>Lorem Ipsum</h2> <p>is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s</p></div>" 
 

 
let ids = content.match(/id='(.*?)'/g).map((val) => { 
 
    return val.replace(/id='/g,'').replace("'",''); 
 
}) 
 

 
console.log(ids)

+1

lol @ upvoters ...彼は最後に '.replace(" '"、' ')'を追加しました... – KarelG

+1

@GüvenAltuntaşこの回答は確かにOPが要求されているものですが、 "正しい答え。あなたは 'let d = r * Math.sqrt(5 * 2 - 3 + 4/2 << 1 + 5 >> 4)/ 3'を使って半径rで円の直径を持つこともできます...この答えは同じカテゴリーです。 – KarelG

+0

私の間違い申し訳ありません。 –

2

ドットを使用すると "。"それはすべてを意味していますがeverithingが、「この答えは正規表現(を必要とせずにHTML の文字列からDOM情報を取得するためのアプローチを説明し

const content = "<div id='x'><h2>Lorem Ipsum</h2> <p>is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s</p></div>" 

let ids = content.match(/id='([^' .*?])'/g).map((val) => { 
    return val.replace(/id='([^' .*?])'/g,'$1'); 
}) 

console.log(ids) 
0

文字を検索しますDOMの解析時にバグやエラーが発生しやすい)。

HTMLの文字列からDocumentFragmentを作成するには、単純なライブラリ(html-fragment)を使用しています。その文字列はメモリ内の単純なDOMツリーになるので、属性のquerySelectorAll要素を使用できます。次に、要素をマップしてIDの配列を取得できます。

const content = "<div id='x'><h2>Lorem Ipsum</h2> <p>is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s</p></div>"; 
 

 
const fragment = HtmlFragment(content); 
 
let ids = Array 
 
    .from(fragment.querySelectorAll('[id]')) 
 
    .map(el => el.id); 
 

 
console.log(ids);
<script src="https://unpkg.com/[email protected]/lib/html-fragment.min.js"></script>

関連する問題