我确信这一定是以前问过的,但是在搜索中找不到。确保从字符串中删除所有非安全字符的最快方法是什么,以便在CSS类名称中使用它?
发布于 2011-10-03 00:26:28
我会替换任何不是小写字母或数字的东西,然后我会添加一个特殊的前缀,以避免与您用于其他目的的类名发生冲突。例如,以下是一种可能的方法:
function makeSafeForCSS(name) {
return name.replace(/[^a-z0-9]/g, function(s) {
var c = s.charCodeAt(0);
if (c == 32) return '-';
if (c >= 65 && c <= 90) return '_' + s.toLowerCase();
return '__' + ('000' + c.toString(16)).slice(-4);
});
}
// shows "prefix_c_a_p_s-numb3rs-__0024ymbols"
alert("prefix" + makeSafeForCSS("CAPS numb3rs $ymbols"));
发布于 2011-10-02 23:06:44
如果您指的是以下符号
!"#$%&'()*+,./:;<=>?@[\]^`{|}~
然后只需将它们替换为空:
names = names.replace(/[!\"#$%&'\(\)\*\+,\.\/:;<=>\?\@\[\\\]\^`\{\|\}~]/g, '');
(我可能在其中添加了额外的或不够的转义字符)
这是一个quick demo。
但正如您所知,并非所有这些符号都是“不安全的”,您可以在以类名(ref)为目标时对符号进行转义。
发布于 2017-04-29 16:42:10
我将它用于我的选择器、ID或类名:
String.prototype.safeCSSId = function() {
return encodeURIComponent(this)
.toLowerCase()
.replace(/\.|%[0-9a-z]{2}/gi, '');
}
console.log("The dæmon is in the detail.".safeCSSId());
https://stackoverflow.com/questions/7627000
复制相似问题