Javascript Регулярные выражения - принять ненулевое значение для первого числа в сумме - PullRequest
0 голосов
/ 22 апреля 2020

Я хочу принять число, которое не начинается с нуля, но более поздние значения могут быть нулевыми. Я использую var.replace (/ [^ 1-9] / g, ''); которые не позволяют мне вводить 0 вообще.

допустимо:

10
9990 

недействительно:

01 
0999

я не должен быть в состоянии ввести 0 с первого места , Если введено 0, то оно должно быть заменено на пустое, то есть логика c

Ответы [ 3 ]

2 голосов
/ 22 апреля 2020

Если вы хотите проверить, не является ли первое значение значения нулевым, вы можете просто сделать подстроку:

Inputvalue.substr(0,1) !== '0'

Если вы хотите заменить все начальные нули:

Inputvalue.replace(/^0+/, '');

^ означает, что «строка начинается с», затем «один или несколько» (+) нулей.


Если вы хотите, чтобы все ведущие нули были перед ди git ( \d) заменено:

Inputvalue.replace(/^0+\d/, '');

^ означает «строка начинается с», затем «один или несколько» (+) нулей.


Если вы хотите получить первый ди git после нулей:

Символ ^ означает «начало строки». Вы говорите, что это может быть 000001, 1 не в начале строки, так что это никогда не будет совпадать.

Я считаю полезным определить, что я хочу в тексте:

  • Я хочу первый ди git, только один -> [1-9]
  • Начинается с (^) с одним или несколькими (+) нулей -> ^0+

В результате получается ^0+[1-9].
Мы хотим сохранить только di git, поэтому поместим его в группу: ^0+([1-9])

const examples = [
  '123', // no starting zeroes
  '0123', // match
  '000123', // match
  '132000123', // no matching zeroes, dont match the end either!
];

console.log(examples.map(function (example) {
  const matches = example.match(/^0+([1-9])/);
  return example + ' -> ' + (matches !== null ? matches[1] : 'no match!');
}));
1 голос
/ 22 апреля 2020

Вы можете использовать отрицательный прогноз, чтобы убедиться, что первая ди git не равна нулю:

var test = [
'0123',
'000001',
'abc',
'123',
'102030',
];
console.log(test.map(function (a) {
  return a + ' :' + /^(?!0)\d+$/.test(a);
}));
0 голосов
/ 22 апреля 2020

Побег \d соответствует любому ди git от 0 до 9. Поскольку вы сказали, что число не должно начинаться с нуля, мы можем начать с записи [1-9].

Итак, последнее регулярное выражение будет выглядеть так: /^[1-9]\d*$/g.

Это будет соответствовать любому ненулевое положительное число при условии, что это вся строка.

Вы можете автоматически проверять ввод данных с помощью этого регулярного выражения.

<input pattern='^[1-9]\d*$'>

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...