我从另一个网站获取以下JavaScript正则表达式替换以删除一些无效字符:
str = str.replace(/[^\u000D\u00B7\u0020-\u007E\u00A2-\u00A4]/g,'');
然而,我注意到它没有发现\ 00B7(ISO-8859-1中心点字符)的出现。
如果我分两步完成,它可以工作:
str = str.replace(/\u00B7/g,'');
str = str.replace(/[^\u000D\u00B7\u0020-\u007E\u00A2-\u00A4]/g,'');
第一替换似乎包含在第二替换中。有人可以向我解释为什么第二行本身并不起作用。感谢。
答案 0 :(得分:2)
第一种和第二种模式完全不同。模式1替换\ u00B7,而第二模式替换模式中未列出的所有字符。从图案2中删除克拉,这应该可以解决您的问题。
答案 1 :(得分:0)
要明确:
/[^\u000D\u00B7\u0020-\u007E\u00A2-\u00A4]/
匹配集合中的所有字符不。因此要匹配\ u00B7(并将其替换为''),请将其从模式中删除:
/[^\u000D\u0020-\u007E\u00A2-\u00A4]/
ASCII字符集在http://www.asciitable.com/给出,可能是您要保留的集合。范围\ u0020- \ u007E涵盖了大部分感兴趣的常见集合,其他通常不需要。
\ u000D是一个回车,我会调查你是否真的需要u00A2,u00A3和u00A4。