替换UTF-8字符

5 javascript jquery html5 utf-8

我正在开发一个打开的jquery库jspdf.上面的库不支持UTF-8字符.有没有办法让我可以使用正则表达式或任何其他方法删除我的html字符串中的所有引号UTF-8字符.

PSEDO CODE:

$(htmlstring).replace("utf-8 quotes character" , "") 
Run Code Online (Sandbox Code Playgroud)

Mik*_*ans 8

首先:如果它不支持Unicode,我建议你停止使用jsPDF.这是2014年中期,缺乏支持应该意味着两年前该项目的死亡.但这只是我的个人信念,而不是你正在寻找的答案的一部分.

如果jsPDF仅支持ANSI(255个字符块,而不是ASCII的127个字符块),那么您可以简单地对\ xFF以上的所有内容进行正则表达式替换:

"lol???".replace(/[\u0100-\uFFFF]/g,'');
// gives us "lol"
Run Code Online (Sandbox Code Playgroud)

如果你只想摆脱引号(但留下潜在的jsPDF打破unicode),你可以根据它们在unicode map中的位置使用"just quotation marks"模式:

string.replace(/[\u2018-\u201F\u275B-\u275E]/g, '')
Run Code Online (Sandbox Code Playgroud)

会抓住['‘','’','‚','?','“','”','„','?','?','?','?','?'],虽然当然你可能想做的是用相应的安全角色替换它们.好消息:只需为刚刚出现的列表创建一个替换数组,并使用它.

2017编辑:

ES6以模式的形式为unicode字符串引入了一个新模式\u{...},它可以在花括号内部执行"任意数量的hexdigits",因此完整的Unicode 9兼容regexp现在将是:

// we can't use these in a regexp directly, unfortunately
a = '\u{100}';
b = '\u{10FFF0}';
re = new RegExp(`[${a}-${b}]`,'g');
c = "lol???".replace(re, '');
Run Code Online (Sandbox Code Playgroud)


Val*_*rij 3

使用

$(htmlstring).replace(/[^\x00-\x7F]/g,'')
Run Code Online (Sandbox Code Playgroud)

删除所有非 ASCII 字符

(通过regex-any-ascii-character