Повторное выражение Javascript для проверки того, начинается ли число с начального нуля

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

Вот несколько примеров использования и ожидаемых результатов.

0001     - Matched
001      - Matched
01       - Matched
00.12312 - Matched
000.1232 - Matched
1        - Not matched
20       - Not matched
0.1      - Not matched
0.123123 - Not matched

Как будет выглядеть это регулярное выражение? Если первый char равен 0, а второй char - numerical[0-9], то он недействителен.

Я пробовал это, но он не работает.

[0][0-9]

Ответ 1

Попробуйте это регулярное выражение:

^0[0-9].*$

Он будет соответствовать всем, начиная с 0, за которым следует цифра.

Он будет "соответствовать" тому, что вы называете "недействительным".

Тест-код должен сделать более понятным:

var regExp = /^0[0-9].*$/
console.log(regExp.test("0001")); // true
console.log(regExp.test("001")); // true
console.log(regExp.test("01")); // true
console.log(regExp.test("00.12312")); // true
console.log(regExp.test("000.1232")); // true
console.log(regExp.test("1")); // false
console.log(regExp.test("20")); // false
console.log(regExp.test("0.1")); // false
console.log(regExp.test("0.123123")); // false

Ответ 2

вы можете попробовать этот шаблон, идея заключается в использовании якорей ^ (для начала) и $ (для конца), чтобы ограничить результат тем, что вы ищете:

^0+\d*(?:\.\d+)?$

Ответ 3

Вы можете использовать что-то вроде этого: -

var a = "0001";
/^[0][0-9]/.test(a)

Ответ 4

0+[1-9][0-9]*

Соответствует, по меньшей мере, одному нолю, за которым следует отличная от нуля цифра, за которой следует любое количество цифр. Не соответствует одиночному 0.

Ответ 5

Этот:

/0\d+/.test("0001")
// true

Если "0" ДОЛЖЕН быть первым символом, то:

/^0\d+/.test("0001")