正则表达式,以防止输入中的重音字母

时间:2018-05-22 14:28:21

标签: javascript jquery html regex html5

我想在输入中阻止重音字母(任何语言)的输入,最好我希望通过属性pattern

使用正则表达式来完成此块

我尝试了一些但我没有成功......



<form>
  <label for="username">Name <i>(only letters without accent)</i></label>
  <br>
  <input name="username" id="username" type="text" pattern="[A-Za-z]+" oninvalid="this.setCustomValidity('Only letters without accent')">
</form>
&#13;
&#13;
&#13;

接受Joao SilvaPedroFabio Duarte ......

拒绝João SilvaPedro CamõesFábio Duarte ......

2 个答案:

答案 0 :(得分:1)

<input name="username" id="username" type="text" 
    pattern="[A-Za-z ]*" title="Latin letters and space characters only"> />

测试此代码here

或者,您可以控制在输入过程中允许使用的字符。

<input name="username" id="username" type="text" onCopy="return false" 
    onDrag="return false" onDrop="return false" onPaste="return false" 
    autocomplete=off />

jQuery的:

$(document).ready(function() {
    $("#username").keypress(function(event) {
        var inputValue = event.which;
        if(!((inputValue >= 65 && inputValue <=  90) ||  // A-Z
             (inputValue >= 97 && inputValue <= 122) ||  // a-z
             (inputValue == 32))) {                      // space
            event.preventDefault(); 
        }
    });
});

测试此代码here

答案 1 :(得分:0)

正如问题中所指出的,听起来你想要阻止除基本拉丁字母和空格以外的任何东西,这对于pattern属性是可行的 - 正则表达式是^[a-zA-Z ]+$

但是,您必须考虑您实际想要允许的名称。例如,你会允许Αρσένιος,Александра或李晓华吗?如果你真的想要允许这些名字而特别禁止使用拉丁字母变音符号,那么它将会变得更加复杂。

另外,正如@Stephen P链接到下面的文章所指出的那样,值得仔细考虑是否值得强迫用户输入实际上不是真名的东西。