在mdash是大写字母后立即修改javascript以便写字母

时间:2013-03-11 22:20:06

标签: javascript jquery regex string

我在这里得到了很多其他问题的帮助:Transform ALL CAPS to Proper Case using CSS and jQuery

但是我一直在尝试修改脚本,以便如果标题中出现mdash,那么它后面的字母也会大写,请参阅http://jsfiddle.net/wm5kZ/5/。这是脚本:

    $('ul.proper-case li a').each(function(){
    var ele = $(this);
    ele.text(toProperCase(ele.text())); 
    }); 

    function toProperCase(str)
    {
        var noCaps = ['of','a','the','and','an','am','or','nor','but','is','if','then', 
    'else','when','at','from','by','on','off','for','in','out','to','into','with'];
        return str.replace(/\w\S*/g, function(txt, offset){
            if(offset != 0 && noCaps.indexOf(txt.toLowerCase()) != -1){
                return txt.toLowerCase();    
            }
            return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();
        });
    }

我一直在努力理解正则表达式,我尝试为mdash添加不同的东西,但我不太清楚如何做到这一点。到目前为止,我没有尝试过任何工作。

任何人都可以帮我知道在哪里修改脚本来执行此操作吗?你能解释一下它正在做什么,所以我可以尝试去理解它吗?非常感谢。

1 个答案:

答案 0 :(得分:1)

正则表达式/\w[^\s\u2014]*/g会这样做。

它将匹配一个单词字符(\w),后跟满足这些要求的零个或多个(*)字符:不是(^)一个空白字符({{1 }或者带有十六进制unicode index 2014(\s)的字符,happens to be \u2014个字符。

jsFiddle Demo