1

<span>既存の html タグを壊したり、句読点を含めたりせずに、文字列のすべての単語をタグでラップしたいと考えています。

たとえば、次の文字列:

This... is, an. example! <em>string</em>?!

次のようにラップする必要があります。

<span>This</span>... <span>is</span>, <span>an</span>. <span>example</span>! 
<span><em>string</em></span>?!

理想的には、単語をラップするだけで、他には何もラップする必要はありません。

アポストロフィを除いて、それらもラップする必要があります。

it's=><span>it's</span>

give 'em=><span>give</span> <span>'em</span>

teachers'=><span>teachers'</span>

現在、非常に単純な正規表現を使用しています。

str.replace(/([^\s<>]+)(?:(?=\s)|$)/g, '<span>$1</span>');

ここstackoverflowのどこかで見つけました。しかし、空白のすべての単語をラップするだけで、句読点もラップします。これは私の場合は望ましくありません。

正規表現が苦手な自分を恥じるべきなのはわかっています。

誰か助けてくれませんか?

どうもありがとう!

4

2 に答える 2

4

この正規表現を試してください:

var str = "This string... it's, an. example! <em>string</em>?!";
str.replace(/([A-Za-z0-9'<>/]+)/g, '<span>$1</span>');

// "<span>This</span> <span>string</span>... <span>it's</span>, <span>an</span>. <span>example</span>! <span><em>string</em></span>?!"
于 2013-01-03T15:52:51.643 に答える