1

如果我有以下html:

<p>e: 1-800-hello-49</p>
<p>another line</p>
<p>
    f: 1-800-hello-49
    g: 1-800-hello-49
</p>

我希望能够在行首检测到一个字符后跟一个冒号,以便获得以下输出:

<p><span>e:</span> 1-800-hello-49</p>
<p>another line</p>
<p>
    <span>f:</span> 1-800-hello-49
    <span>g:</span> 1-800-hello-49
</p>

我尝试过使用正则表达式,但在这种情况下我很难掌握正则表达式。

4

3 回答 3

5

尝试

$('p').html(function(idx, html){
    return html.replace(/\b([a-z]:)/ig, '<span>$1</span>')
})

演示:小提琴

于 2013-09-10T09:24:52.117 回答
2
var pattern = /^\s*(.:)/gm;

$('p').html(function(i, $html) {
    return $html.replace(pattern, '<span>$1</span>');
});

jsFiddle 演示

于 2013-09-10T09:32:38.017 回答
-2

你可以试试这个:

$('p').each(function() {
   var html = $(this).html();
   if(html.charAt(1) == ':')
   {
       $(this).html( '<span>' + html.charAt(0) + '</span>' + html.substr(2) );
   }
});

当然,这只适用于 jQuery。如果您使用香草 javascript,请告诉我,以便我可以更新代码。

于 2013-09-10T09:28:58.750 回答