2014-12-02 49 views
1

我对正则表达式并不是很满意,而且我也没有完全理解这一点,我从中得到的结果是,它找到每个h1并为它的最后一个词添加一个类。对此正则表达式的解释

$("h1").html(function(index, old) { 
    return old.replace(/(\b\w+)$/, '<span class="myClass">$1</span>'); 
}); 

我试图让它通过最后两个字符

回答

2

这个(写得不好)的正则表达式在输入结尾找到一个单词字符序列(拉丁字母,数字和下划线)。同样可以实现更简单:/\w+$/,因此\b也不parens在这里实际上是必要的。

要匹配两个最后的话,你会需要像

/\w+(?=(\W+\w+)?$)/g 

,这意味着“一个字,后面可以跟另一个字输入年底前”。

要匹配两个最后的字符 - 嗯,这是你应该能够自己弄清楚的东西(提示:正则表达式语言中的任何字符是.(点))。

+0

我怎样才能得到最后两个字符? – 2014-12-02 13:43:03

+0

@CaioKawasaki:更新。 – georg 2014-12-02 13:44:48

+0

@georg好的答案,很好的挑战= D – 2014-12-02 13:45:42

5

在这里工作是和解释:

/  : regex delimter 
    ( : begin capture group #1 
    \b : word boundary 
    \w+ : one or more word character (same as [a-zA-Z0-9_]+) 
)  : end of group 
    $  : end of string 
/  : regex delimiter 

它的字符串的最后一个字相匹配,即的硬道理h1标签。

+2

我很难用初学者的眼光看待事物,但我不认为这个“解释”实际上可以解释任何事情。为他显示_why_他需要'\ b'和所有这些东西(提示:他没有)。 – georg 2014-12-02 13:51:17