首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >javascript将字符串转换为css的安全类名

javascript将字符串转换为css的安全类名
EN

Stack Overflow用户
提问于 2011-10-02 22:39:22
回答 6查看 14.2K关注 0票数 24

我确信这一定是以前问过的,但是在搜索中找不到。确保从字符串中删除所有非安全字符的最快方法是什么,以便在CSS类名称中使用它?

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2011-10-03 00:26:28

我会替换任何不是小写字母或数字的东西,然后我会添加一个特殊的前缀,以避免与您用于其他目的的类名发生冲突。例如,以下是一种可能的方法:

代码语言:javascript
复制
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"));
票数 37
EN

Stack Overflow用户

发布于 2011-10-02 23:06:44

如果您指的是以下符号

代码语言:javascript
复制
!"#$%&'()*+,./:;<=>?@[\]^`{|}~

然后只需将它们替换为空:

代码语言:javascript
复制
names = names.replace(/[!\"#$%&'\(\)\*\+,\.\/:;<=>\?\@\[\\\]\^`\{\|\}~]/g, '');

(我可能在其中添加了额外的或不够的转义字符)

这是一个quick demo

但正如您所知,并非所有这些符号都是“不安全的”,您可以在以类名(ref)为目标时对符号进行转义。

票数 13
EN

Stack Overflow用户

发布于 2017-04-29 16:42:10

我将它用于我的选择器、ID或类名:

代码语言:javascript
复制
String.prototype.safeCSSId = function() {
  return encodeURIComponent(this)
    .toLowerCase()
    .replace(/\.|%[0-9a-z]{2}/gi, '');
}

console.log("The dæmon is in the detail.".safeCSSId());

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7627000

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档