Недавно мне нужно было создать регулярное выражение для проверки ввода в JavaScript. Вход может содержать 5 или 6 символов и должен содержать ровно 5 номеров и одно дополнительное пространство, которое может быть в любом месте строки. Я вообще не привык к регулярному выражению, и хотя я пытался найти лучший способ, я закончил с этим:
(^\d{5}$)|(^ \d{5}$)|(^\d{5} $)|(^\d{1} \d{4}$)|(^\d{2} \d{3}$)|(^\d{3} \d{2}$)|(^\d{4} \d{1}$)
Это делает то, что мне нужно, поэтому допустимые входы (если 0 - любое число)
'00000'
' 00000'
'0 0000'
'00 000'
'000 00'
'0000 0'
'00000 '
Я сомневаюсь, что это единственный способ добиться такого соответствия с регулярным выражением, но я не нашел способ сделать это более чистым способом. Итак, мой вопрос: как это лучше писать?
Спасибо.
Edit:
Так что можно! Ответ Tom Lord делает то, что мне нужно, с регулярными выражениями, поэтому я отметил его как правильный ответ на мой вопрос.
Однако вскоре после того, как я опубликовал этот вопрос, я понял, что я не думаю правильно, поскольку каждый другой ввод в проекте был легко "валидируемым" с регулярным выражением, я сразу же предполагал, что смогу проверить его и с ним,
Оказывается, я мог бы просто сделать это:
const validate = function(value) {
const v = value.replace(/\s/g, '')
const regex = new RegExp('^\\d{5}$');
return regex.test(v);
}
Спасибо всем за крутые ответы и идеи!:)
Edit2: Я забыл упомянуть, возможно, очень важную деталь, которая заключается в том, что вход ограничен, поэтому пользователь может ввести только до 6 символов. Мои извинения.