jQuery大写单词定位器

时间:2012-03-14 04:21:46

标签: javascript jquery

我需要在大写<p> </p>之间找到超过4个字符的单词,并为它们添加一个样式(例如斜体)。

我知道函数isUpperCase()但不知道如何应用它来检查字符串是否超过4个字符。

function isUpperCase( string ) {
    (?)
}

感谢。

3 个答案:

答案 0 :(得分:5)

var ps = [].slice.call(document.getElementsByTagName("p"))

ps.forEach(function (p) {
  p.textContent.split(" ").forEach(function (word) {
    if (word.length > 4 && word.toUpperCase() === word) {
      // 4character UPPERCASE word
    }
  })
})

答案 1 :(得分:1)

您可以使用正则表达式替换每个<p>元素的innerHTML中长度超过四个字符的任何大写文本,并且该文本被您尝试插入的标记所包围:

$('p').each(function(){
    var pattern = /([-A-Z0-9]{4,})/g;
    var before = '<span style="color: red;">';
    var after = '</span>';
    $(this).html($(this).html().replace(pattern, before+"$1"+after));
});

http://jsfiddle.net/eHPVg/

答案 2 :(得分:1)

是的,就像Rob说的那样,我认为Raynos的答案不会跨浏览器工作,也不会让你修改段落中的匹配。

这是一个稍微修改过的版本:

var i = 0, ps = document.getElementsByTagName("p");

for(len = ps.length; i<len; i++)
{
    var p = ps[i];
    p.innerHTML = p.innerHTML.replace(/\b([A-Z]{4,})\b/g, "<span style='font-style:italic'>$1</span>"; 
}

您可以将范围代码更改为您要添加的任何样式。只需确保保留$ 1,即引用原始大写单词。