Regex для предотвращения акцентированных букв во входных данных - PullRequest
0 голосов
/ 22 мая 2018

Я хочу заблокировать ввод букв с акцентированием (любой язык) при вводе, желательно, чтобы этот блок выполнялся с regex через атрибут 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>

Принимает : Joao Silva, Pedro, Fabio Duarte ...

Отклоняет : João Silva, Pedro Camões, Fábio Duarte ...

Ответы [ 2 ]

0 голосов
/ 22 мая 2018

Как указано в вопросе, звучит так, как будто вы хотите заблокировать что-либо, кроме букв латинского алфавита и пробелов, что выполнимо с атрибутом pattern - регулярное выражение равно ^[a-zA-Z ]+$.

Однако, вы должны учитывать, какие имена вы на самом деле хотите разрешить.Например, вы бы позволили Αρσένιος, Александра или 李晓华?Если вы действительно хотите разрешить эти имена и , в частности, запретить диакритические знаки латинского алфавита, это будет значительно сложнее.

Кроме того, как указано в статье @Stephen P, ссылка на которую приведена нижеСтоит тщательно подумать о том, стоит ли заставлять ваших пользователей вводить то, что на самом деле не является их настоящим именем.

0 голосов
/ 22 мая 2018
<input name="username" id="username" type="text" 
    pattern="[A-Za-z ]*" title="Latin letters and space characters only"> />

Проверьте этот код здесь .


Кроме того, вы можете указать, какие символы разрешены при наборе.

<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(); 
        }
    });
});

Проверьте этот код здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...