我正在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 此链接中提到的字符是罪魁祸首。我需要一个正则表达式来捕获它们并替换它们。
例如:AAAAAAAAAAAAAAAAAAAAAAA
是文本字段中的值。现在,如果我们检查$("#name").val().length
,即使我们只能看到23个字符,它也会给出24。我需要删除该隐藏字符。
在这种情况下请帮助我。希望我的查询清楚
更新:
var result = selectedElement.replace(/[\u200B-\u200D\uFEFF]/g, '');
解决了我的问题。
谢谢大家的支持。
答案 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 = `AAAAAAAAAAAAAAAA**AAAAAAA`;
const cleaned = val.replace(/[^A-Za-z*]/g,"");
console.log(val.length,cleaned.length);