【问题标题】:Non Width Special Character Removal非宽度特殊字符删除
【发布时间】:2016-11-29 05:40:30
【问题描述】:

下面是我从用户那里获取输入的 HTML 代码。

<HTML>
<BODY>
<FORM METHOD=POST onSubmit="javascript:return(exa(this.form.model.value))">

<INPUT TYPE=TEXT NAME=MODEL VALUE="">
<INPUT TYPE=SUBMIT NAME=SUBMIT VALUE="Next">

</FORM>
</BODY>
</HTML>

当用户输入模型名称时(具有零宽度特殊字符)-->PMUE4526AAAAAA

下面是删除非ASCII字符的java脚本。但是,它不适合我。

function exa(myString)
{
  alert("String: "+myString);alert("String_length: "+myString.length);
  myString=  myString.replace(/[^\x20-\x7e]/g,'');
  alert("String: "+myString);alert("String_length: "+myString.length);

每当我试图显示我从 HTML 接收到的值时,"&amp;#8203;&amp;#8203;PMUE4526AAAAAA" 都会这样显示。所以,我的 Java 脚本程序认为 "&amp;#8203;"(7 个字符),而不是特殊字符。

请帮我解决问题。

【问题讨论】:

  • 看起来您的用户正在输入 HTML,而不是实际的字符。
  • @Bergi,用户正在通过 HTML 输入。我只是想删除那些非宽度字符以进一步处理。请帮我删除从 HTML 源提供的特殊字符。
  • .value 不读取 HTML 源代码,而是读取 DOM 的属性 - 实际的用户输入。

标签: javascript html non-ascii-characters


【解决方案1】:

尝试在替换中使用此正则表达式:/([^\x00-\x7F]|[0-9]+;)/g

【讨论】:

  • 那是个兔子洞。例如,同样的字符还有&amp;#x200b;
  • @kj_ 现在,特殊字符已被删除。感谢您的帮助。
  • @msiva1989 我怀疑你明天也会遇到同样的问题。它将改为“​​PMUE4526AAAAAA”。
  • @Ouroborus 感谢您提供的信息。想要删除所有不可见的字符。
  • @Ouroborus 十六进制代码:​ 和十进制代码:​ 对于这个不可见字符是相同的。
猜你喜欢
  • 1970-01-01
  • 2015-05-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-14
  • 1970-01-01
  • 1970-01-01
  • 2019-03-11
相关资源
最近更新 更多