我试图只允许在文本框中输入以下字符:
A
到Z
首都和小写,Ñ
和ñ
以及空格。 Onkeyup on运行以下功能:
FieldOnKeyUp(el) { !(/^[A-zÑñ-\s]*$/i).test(el.value)?el.value
= el.value.replace(/[^A-zÑñ-\s]/ig,''):null; }
我所做的最糟糕的事情是该字段仍然接受以下特殊字符:
` ^ _ \ ] and [
有没有人对此有所了解?
答案 0 :(得分:2)
问题在于你的正则表达式:
[^A-zÑñ-\s]/ig
^---- problem is here: you need to change to an uppercase Z
您已设置/i
忽略大小写标记,但您还设置了A-z
的字符范围 - 即大写字母A到小写字母z。当前正在接受的您不想要的额外字符(“[”等)都落在大写字母Z和小写字母a之间。尝试将其更改为A-Z
,看看会发生什么。
另请注意,您的用户可能会通过粘贴(通过主菜单或右键菜单)输入无效字符,而关键事件处理程序也无法捕获该字符。
答案 1 :(得分:1)
将您的代码部分更改为以下内容,然后查看
FieldOnKeyUp(el) { !(/^[a-zA-ZÑñ-\s]*$/i).test(el.value)?el.value
= el.value.replace(/[^a-zA-ZÑñ-\s]/ig,''):null; }
并没有得到你的实际要求。将插入符^
放在[
和]
中会使目标字符串不允许使用字母表。但根据你的编码,我只是修改了错误的正则表达式模式。