【问题标题】:Removing invalid characters in JavaScript删除 JavaScript 中的无效字符
【发布时间】:2012-09-27 01:58:33
【问题描述】:

谁能提供正则表达式来搜索和替换发现的非法字符

例如,删除 �

我不确定存在多少种“非法”字符,但我认为这将是一个好的开始。

非常感谢

编辑 - 我无法控制数据,我们正在尝试为我们收到的潜在错误数据创建一个捕获。

【问题讨论】:

  • 我认为首先你应该明白他们为什么会到达那里。编码是什么?
  • 我认为最好只包含那些合法的字符,这可能真的很容易。再说一次,我不知道你有多少个字符是合法的。
  • 我们收到了错误的数据,试图推动供应商确保字符串编码正确,但我们正试图为它设置一个捕获。
  • 我建议只删除字符串解码器抛出的字符,如下所示,将其替换为 0xFFFD。
  • 有什么理由不接受答案?

标签: javascript regex string


【解决方案1】:

无效字符在解析时被转换为 0xFFFD,因此任何无效字符代码将被替换为:

myString = myString.replace(/\uFFFD/g, '')

你可以获得所有类型的无效字符here

【讨论】:

  • 感谢您提供的信息,我将在几天内无法再次检查,但这在第一次尝试时不起作用。我认为这是前进的方向,所以我只是检查一下我们是否正确实现了它,它几乎没有很多代码:-)
  • 您是否重新分配了字符串? replace 没有破坏性,因此您需要重新分配替换的字符串。
  • 是的,这是一个返回 myString.replace(/\uFFFD/g, '') 我们将在工作周内重新审查它,如果有什么被忽略了,我不会感到惊讶
  • 在我的情况下,我必须从我的字符串中替换 \uFFFD 字符,而不是 unicode 符号。所以我通过使用 myString.replace(/\\uFFFD/g, '') 解决了这个问题
【解决方案2】:

您可以使用白名单来代替黑名单。例如如果你只想接受字母、数字、空格和一些标点符号,你可以这样做

myString.replace(/[^a-z0-9 ,.?!]/ig, '')

【讨论】:

  • 此上下文中的无效字符显然是格式错误的 UTF-8,而不是非 ASCII。
  • 您对问题的了解比实际陈述的要多。 OP 可能在编码方面存在问题,但这并不是他的问题实际所说的。
  • 我不认为我是:“例如,删除 �” 我认为他说得很清楚,他想要删除的无效字符类型是字符串解码器可以删除的无效字符。 t,并不是说他不喜欢他们。正如我之前所说,将有效的 utf-8 限制为 ascii 是令人震惊的建议。
【解决方案3】:

试试这个,它适用于所有意想不到的角色,如 ♫ ◘ 等...

dataStr.replace(/[\u{0080}-\u{FFFF}]/gu,"");

【讨论】:

  • 替换重音
猜你喜欢
  • 2011-02-09
  • 2017-02-02
  • 2012-05-17
  • 2022-11-14
  • 2018-06-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-22
相关资源
最近更新 更多