删除jQuery中的空字符,空白字符,不可见字符

时间:2020-10-15 10:51:30

标签: javascript html jquery

我正在html文本框中执行验证,该文本应该仅传递字母(a-z / A-Z)和少量特殊字符(如*和&等)。否则它应该显示一些错误。 我已经编写了一个执行相同功能的JavaScript函数。

function removeInvalidCharacters(selectedElement) {
    if (selectedElement && typeof selectedElement.val() !== typeof undefined && selectedElement.val() != "") {
        selectedElement.val(selectedElement.val().replace(/[\u0000-\u001F]|[\u007F-\u00A0]/g, "").replace(/\\f/g, "").replace(/%/g,""));
    }
}

在传递给函数selectedElement之前,我正在过滤removeInvalidCharacters

$("#name").val(toASCII($("#name").val()));
var selectedElement = $("#name").val();

但是现在我面临的情况是空字符,空白字符,不可见字符和空白字符绕过我的正则表达式。我可以在name字段中看到一些不可见的字符。我要替换这些字符。

在进一步的调查中,我发现Invisible characters - ASCII 此链接中提到的字符是罪魁祸首。我需要一个正则表达式来捕获它们并替换它们。

例如:AAAAAAAAAAAA‎AAAAAAAAAAA是文本字段中的值。现在,如果我们检查$("#name").val().length,即使我们只能看到23个字符,它也会给出24。我需要删除该隐藏字符。

在这种情况下请帮助我。希望我的查询清楚

更新:

var result = selectedElement.replace(/[\u200B-\u200D\uFEFF]/g, '');解决了我的问题。 谢谢大家的支持。

2 个答案:

答案 0 :(得分:1)

如果您只想允许(a-z / A-Z),请尝试以下操作:

str = str.replace(/[^a-zA-Z]/g, '');

答案 1 :(得分:1)

包括您要保留的字符而不是您不想保留的字符,因为该列表可能不完整

否则请看这里:Remove zero-width space characters from a JavaScript string

const val = `AAAAAAAAAAAA‎AAAA**AAAAAAA`;
const cleaned = val.replace(/[^A-Za-z*]/g,"");
console.log(val.length,cleaned.length);