3

私は自分のウェブサイト用にいくつかのJavaScriptを書いています。

特定の名前を (javascript を使用して) リンクに変換できるようにしたいと考えています。

たとえば、Benjamin という名前を指定すると、次のようになります。

Hello my name is Benjamin

の中へ

Hello my name is <a href='something'>Benjamin</a>

秘訣は、事前に変換する必要がある名前がわからないことです。それらは ajax 応答で受け取ります。また、次のようなものを処理できる必要があります

<b>B</b>enjam<b>in</b>

のようなものに触れていない間

B<br />enja<br />min

この種の解析を実行できるものを設計するためのベスト プラクティスは何かを知りたいです。おそらくより良い解決策があれば。

助けてくれてありがとう

4

2 に答える 2

1

これをテキストに適用します。

.replace(new RegExp("Benjamin".split('').join(".*?"),"g"),'<a href="#">$&</a>')
                  //    ^------------------------ word to be replaced

ライブデモ

于 2012-07-23T13:12:07.257 に答える
0

この正規表現は、次のように、これらすべての名前に一致します。

var str1 = "Hello Im Benjamin";
var str2 = "Hello Im <b>Benjamin</b>";
var str3 = "Hello Im <b>Benj<b>amin</b></b>"
var str4 = "Hello Im <br>Benjamin< />"    

console.log(str1.match(/ (?:(?:<b>)?[^><\s]?(?:<\/b>)?)*$/)); //[" Benjamin"] 
console.log(str2.match(/ (?:(?:<b>)?[^><\s]?(?:<\/b>)?)*$/)); //[" <b>Benjamin</b>"] 
console.log(str3.match(/ (?:(?:<b>)?[^><\s]?(?:<\/b>)?)*$/)); //[" <b>Benj<b>amin</b></b>"] 
console.log(str4.match(/ (?:(?:<b>)?[^><\s]?(?:<\/b>)?)*$/)); //null
​

フィドル

于 2012-07-23T14:14:38.160 に答える