提问人:Username_null 提问时间:11/17/2011 最后编辑:MicrofedUsername_null 更新时间:11/17/2011 访问量:3150
Jquery 替换文本但保留大小写
Jquery replace text but keep case
问:
我正在为一个喜欢用“Sensasianal”这个词来描述他的亚洲美食的人建立一个网站。亚洲这个词总是使用另一种颜色来挑选的,我在 Jquery 中使用 .replace() 设法实现了这种颜色,因此:-
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"));
但结果仍然是喜忧参半的。
如果有人能就如何对案文进行修改但保留原始情况向我提出建议,我将不胜感激。非常感谢。
答:
1赞
Microfed
11/17/2011
#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"));
有关正则表达式的其他解构,请参阅此页面。
评论
0赞
Username_null
11/17/2011
我真的只是想编辑我的帖子,说当你回答时我不明白“ig”是什么意思。
0赞
Username_null
11/17/2011
这就是我问题的解决方案。谢谢你的帮助。如果你不介意,你能告诉我为什么这有效吗?ig 是否代表忽略大小写?
0赞
Microfed
11/17/2011
/i 使正则表达式匹配不区分大小写。
9赞
Gijs
11/17/2011
#2
replaceAsian.html(replaceAsian.html().replace(/(s)(asian)(a)/ig, "$1<em>$2</em>$3"));
将保留大小写,因为它会重用匹配的文本。
请注意,这是不区分大小写的标志,这意味着它将匹配每个匹配项,而不是像没有该标志那样只匹配第一个匹配项。i
g
g
有关 JS 中正则表达式功能的一个很好的概述,请参阅 MDN。
评论
0赞
Username_null
11/17/2011
感谢您提供此解决方案,并感谢您的解释。我必须承认,正则表达式对我来说完全是一个谜。
0赞
Gijs
11/17/2011
不用担心。链接的 MDN 文章在总体上很好地解释了它们,所以你可能想读一读。如果您知道如何使用正则表达式,它们将非常强大。
4赞
Rory McCrossan
11/17/2011
#3
replaceAsian.html(replaceAsian.html().replace(/(S)(ASIAN)(A)/ig, "$1<em>$2</em>$3"));
评论
0赞
Username_null
11/17/2011
感谢您的解决方案,很遗憾我不能选择多个答案作为我接受的答案。
1赞
Rory McCrossan
11/17/2011
不用担心。Gijs 值得接受,因为他提供的背景信息比我多得多。
0赞
Gijs
11/17/2011
感谢您的亲切评论 - 不过我忘记了 JS 小提琴。:-)
评论