Регуляка. Инпут только c цифрами и первый символ не 0

Всем привет!

Вопрос: Нужно разрешить вводить в инпут только цифры и первая цифра не должна быть 0

Сейчас это так:

const str = '012323123a2312sdasf22123gev321d';
const clearedString = str.replace(/^[0|\D]/, '').replace(/\D/g, '')

// 12323123231222123321

Всё уже работает!

Но как эти 2 replace переписать в один?


Ответы (1 шт):

Автор решения: Wiktor Stribiżew

Вы можете использовать

.replace(/^[\D0]+|\D/g, '')

См. пример работы выражения.

Подробности

  • ^ - начало строки
  • [\D0]+ - один и более символов, отличных от цифр, или цифра 0
  • | - или
  • \D - любой символ, отличный от цифры
  • g - найти все совпадения.

Пример работы кода:

console.log( '012323123a2312sdasf22123gev321d'.replace(/^[\D0]+|\D/g, '') )

→ Ссылка