Проверьте ввод с регулярным выражением для универсальных алфавитов в JavaScript - PullRequest
0 голосов
/ 03 июля 2018

У меня есть валидатор формы от AntonLapshin , где я пытаюсь проверить непустое поле ввода, которое может принимать только алфавиты, пробел и -. Буквами могут быть буквы a-z, A-Z и европейские буквы æÆøØåÅöÖéÉèÈüÜ и т. Д. Подробнее см. .

Вот что я делаю:

method  : function(input) {
    return input.value !== ''
        && input.value === /^[a-zA-Z'\- \u00c0-\u017e]+$/
}

Здесь должно совпадать: Åløæ-Bond Mc'Cool

Но не удалось: 123-Bond Mc'C@o!

Когда я запускаю ^[a-zA-Z'\- \u00c0-\u017e]+$ в regex tester , он работает абсолютно нормально, но в моем скрипте он не проверяется и выдает неверную ошибку ввода.

Что я делаю не так?

Ответы [ 3 ]

0 голосов
/ 03 июля 2018

Я предпочитаю использовать RegExp. Вам также нужно сделать return pattern.test(input)

Это будет работать:)

var test1 = "Åløæ-Bond Mc'Cool";
var test2 = "123-Bond Mc'C@o!";

var pattern = new RegExp(/^[a-zA-Z'\- \u00c0-\u017e]+$/);

function regextest(input) {
    return input !== '' && pattern.test(input)
}

console.log(regextest(test1))
console.log(regextest(test2))
0 голосов
/ 05 июля 2018

Я нашел более простое решение для моего вопроса:

method  : function(input) {
    return input.value !== '' && /^[a-zA-Z'\- \u00c0-\u017e]+$/.test(input.value)
}

Проблема заключалась в том, что после оператора && я проверял входное значение (что неверно при проверке регулярных выражений) вместо логического значения.

Это решение отлично работает и не создает путаницы.

0 голосов
/ 03 июля 2018

измените свою функцию для тестирования с помощью регулярного выражения

var pattern = /^[a-zA-Z'\- \u00c0-\u017e]+$/

var method = function(input) {
  return input !== '' &&
    pattern.test(input)
}

//your sample strings
console.log(method("Åløæ-Bond Mc'Cool"))
console.log(method("123 - Bond Mc 'C@o!"))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...