2011-11-17 61 views
3

我正在建立一个网站,喜欢用“Sensasianal”这个词来形容他的亚洲美食。亚洲的字总是挑选出用)的另一种颜色,我管理使用.replace(jQuery中来实现的,从而: -jquery替换文本,但保持案例

replaceAsian.html(replaceAsian.html().replace(/sasiana/ig, "s<em>asian</em>a")); 

我然后可以与单独的颜色样式的元素。

但是,如果原文是大写,结果是混合大小写。

所以,我想这个

replaceAsian.html(replaceAsian.html().replace(/SASIANA/ig, "S<em>ASIAN</em>A")); 
replaceAsian.html(replaceAsian.html().replace(/sasiana/ig, "s<em>asian</em>a")); 

但结果仍然是混合大小写。

如果有人可以告诉我如何对文本进行更改,但保留原始案例,我将不胜感激。非常感谢。

回答

8
replaceAsian.html(replaceAsian.html().replace(/(s)(asian)(a)/ig, "$1<em>$2</em>$3")); 

将保留大小写,因为它重用了匹配的文本。

请注意,i是不区分大小写的标志,并且g表示它将匹配每个出现的地址,而不是仅在没有g标志时发生的第一次出现。

有关JS中正则表达式功能的非常好的概述,请参阅MDN

+0

感谢您的解决方案,并感谢您的解释。我必须承认,正则表达式对我来说是完全神秘的。 – Andrew

+0

不用担心。链接的MDN文章在解释它们时做得很好,所以你可能想要给它一个阅读。正则表达式非常强大,如果你知道如何使用它们。 – Gijs

1
replaceAsian.html(replaceAsian.html().replace(/SASIANA/g, "S<em>ASIAN</em>A")); 
replaceAsian.html(replaceAsian.html().replace(/sasiana/g, "s<em>asian</em>a")); 

有关正则表达式的其他信息,请参阅this page

+0

我是从字面上只是去编辑自己的帖子说,我不明白什么是“IG”的意思,当你回答。 – Andrew

+0

这就是我的问题的解决方案。感谢您的帮助。如果你不介意,你能告诉我为什么这有效吗? ig代表无视情况吗? – Andrew

+0

但是..那么'aSian'呢? –

4
replaceAsian.html(replaceAsian.html().replace(/(S)(ASIAN)(A)/ig, "$1<em>$2</em>$3")); 

jsFiddle to prove

+0

感谢您的解决方案,我不能选择多个答案作为我接受的答案,这是一个耻辱。 – Andrew

+1

不用担心。 Gijs值得接受,因为他提供了比我更多的背景信息。 –

+0

感谢您的亲切评论 - 我忘了JS小提琴,但。 :-) – Gijs