У меня есть URL-адрес типа ввода, и клиент хочет принимать только символы ENGLISH на входе
Функция Keypress и Blur - это то, что у меня есть, но в размытии оно все еще принимает этот likr inout "建築 家 test.com"
<input type="url" id="url" required pattern="https?://.+" placeholder="http://example.com">
$("#url").on("keypress", function(event) {
var englishAlphabetDigitsAndWhiteSpace = /[a-zA-Z0-9!@#$%^*_|:/.]/g;
var key = String.fromCharCode(event.which);
if (event.keyCode == 8 || event.keyCode == 37 || event.keyCode == 39 || englishAlphabetDigitsAndWhiteSpace.test(key)) {
return true;
}
return false;
});
$("#url").blur(function(e){
var input = $(this).val();
var regex = /[a-zA-Z0-9!@#$%^*_|:/.]/g;
if(regex.test(input)) {
alert("OK");
}
else {
alert("no Japanese allowed");
return false;
}
});
Не могли бы вы попробовать следующее регулярное выражение:
^([a-zA-Z0-9!@#$%^*_|:/.])*$
или тот, в зависимости от того, принимаете ли вы пустую строку или нет как действительную запись.
^([a-zA-Z0-9!@#$%^*_|:/.])+$
И последнее, но не менее важное: если вы хотите проверить, что ваш ввод является хорошо сформированным UR, посмотрите на следующую ссылку:
Какое лучшее регулярное выражение проверяет правильность строки?
if ([...'建築家test.com'].find(s => s.codePointAt(0) > 255)) { console.log('invalid input') }