Просмотр полной версии : Regexp для валидации значения в Input
ar4ipers
02.04.2019, 13:40
Здравствуйте, не могу додумать регулярку, которая разрешала бы ввод 0, но запрещала 01, 000, 02234 и так далее, но при этом можно было бы ввести 10 или 1000 или 12000
<input type="text"
class="cell-data"
ng-model="cell.par"
ng-change="setValidParValue()">
$scope.setValidParValue = function () {
$scope.cell.par = $scope.cell.par.replace(/[^0-9]/g, '').replace(/(^[0]$)/, '');
}
чет не могу додумать как правильно переписать /(^[0]$)/, может есть у кого идеи?
ar4ipers,
replace(/^(?:0+)/, '')
Dilettante_Pro
02.04.2019, 14:21
<input type="text" onchange="setValidParValue(this)">
<script>
function setValidParValue(elem) {
elem.value = Number.parseInt(elem.value.replace(/[^0-9]/g, '')).toString();
}
</script>
ar4ipers
02.04.2019, 14:51
рони,
Спасибо, пробовал так же, но в таком кейсе я не смогу ввести просто 0
elem.value = elem.value.replace(/^0|\D/,'')
ar4ipers
02.04.2019, 15:04
Спасибо, так же пробывал, но просто 0, я не смогу ввести, с данным условием я смогу ввести 10, 1000 и т.д, но не смогу ввести всё что начинается с нуля, хотя просто 0 нужно вводить. Т.е. кейсы 01, 000 невалидные, а кейсы 0, 100, 10 валидные
То есть нельзя первый ноль если второй знак не ноль, но можно если все ноли или один ноль?
elem.value = elem.value.replace(/^0(?=[1-9])|\D/,'')
ar4ipers
02.04.2019, 15:12
несовсем
10 - валидный кейс
0 - валидный кейс
01 - невалидный кейс
00 - невалидный кейс
00001 - невалидный кейс
первый ноль можно всегда, нельзя после него что-то добавлять, и вот как данное условие регуляркой описать, не знаю :(
Dilettante_Pro
02.04.2019, 15:18
ar4ipers,
А обязательно только регулярка?
Этот вариант
Number.parseInt(elem.value.replace(/[^0-9]/g, '')).toString();
не подходит?
Выдает все валидные кейсы
replace(/^0(?=\d)|\D/,'')
ar4ipers
02.04.2019, 15:36
Вот в том-то и прикол, что мне интересно именно регуляркой)))
ar4ipers,
.replace(/^(?:0+(\d))/, '$1')
ar4ipers
02.04.2019, 15:37
Спасибо) то что нужно)
мне интересно именно регуляркой
Ну так в чем проблема?
<input oninput="this.value=this.value.replace(/^0(?=\d)|\D/,'')" />
рони, так возможен ввод и не цифровых символов.
ar4ipers
02.04.2019, 15:43
Спасибо, но интересно было регуляркой именно) а в данном кейсе если введу / то получим NaN в input-е)
так возможен ввод и не цифровых символов.
в коде они удалены ранее
$scope.cell.par.replace(/[^0-9]/g, '').replace
но интересно было регуляркой именно
Это куму и о чем?
vBulletin® v3.6.7, Copyright ©2000-2025, Jelsoft Enterprises Ltd. Перевод: zCarot