こんな感じかな。
JSCSS.CSSValueConverter = {
_string: function(str) {
return str.replace(/\\([0-9a-fA-F]{1,6}[ \t\r\n\f]?|\r\n|[ \t\r\n\f]|.)/g, function(str, t) {
if (t.match(/^[0-9a-fA-F]{1,6}[ \t\r\n\f]?$/)) {
return String.fromCharCode(parseInt('0x' + t));
}
else if (t.match(/^(\r\n|[ \t\r\n\f])$/)) {
return '';
}
else {
return t;
}
});
},
string: function(str) {
var m = str.match(/^['"]((?:[\r\n]|.)*?)['"]$/);
str = m[1];
return this._string(str);
},
url: function(url) {
var m = url.match(/^url\([ \n\t\r\f]*["']?[ \n\t\r\f]*((?:[\r\n]|.)*?)[ \n\t\r\f]*["']?[ \n\t\r\f]*\)$/);
url = m[1];
return this._string(str);
}
};
テスト
alert(JSCSS.CSSValueConverter.string('"\\3042"'));