【问题标题】:Jquery removing unidentifiable/illegal characters from stringJquery从字符串中删除无法识别/非法字符
【发布时间】:2014-05-13 03:48:50
【问题描述】:

我有一个字符串,我从 word 文档中复制,然后将它传递到我的文本区域。 问题是该字符串包含一个似乎是右引号的字符,但 jquery 无法识别它。

我正在使用以下正则表达式

return inputValue.match("^(?!.*(<|>)).*[a-zA-Z0-9 \’\‘\@\!\#\$\%\^\&\*\(\)\_\+\-\=\{\}\:\;\'\,\.\?\|\/\~\`\n]+$") == null ? true : false;

这里无法识别的字符串是

\’\‘

当我在 firebug 中调试时检查相同的正则表达式时,我得到它

return inputValue.match("^(?!.*(<|>)).*[a-zA-Z0-9 \ \ \@\!\#\$\%\^\&\*\(\)\_\+\-\=\{\}\:\;\'\,\.\?\|\/\~\`\n]+$") == null ? true : false;

请注意,\’\‘ 现在在 jquery 中是 \ \,因此它总是失败.. 我进一步检查了一下,这个角色的 Ascii 值为

&#8216;

和

&#8217;

请告诉我一种将这些更改为普通单引号的方法,即 Ascii 值 39。 或将其从字符串中完全删除

我知道我可以使用替换功能来做同样的事情,但问题是它不仅与单引号有关..将来也可以是任何其他字符..

所以对于这些非法/无法识别的字符,我需要一个万无一失的解决方案

【问题讨论】:

    标签: c# jquery regex illegal-characters


    【解决方案1】:

    尝试使用它们的十六进制等价物(也可以使用 @ 制作您的字符串文字):

    return inputValue.match(@"^(?!.*(<|>)).*[a-zA-Z0-9 \u2018\u2019@!#$%^&*()_+={}:;',.?|/~`\n-]+$") == null ? true : false;
                                                       ^^^^^^^^^^^^
    

    \u2018 用于‘,\u2019 用于’。

    ideone demo

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-12-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-02
      • 2013-04-07
      • 1970-01-01
      • 2019-06-06
      相关资源
      最近更新 更多