Найдите неотрицательные целые
Есть строка с целыми числами.
Создайте регулярное выражение, которое ищет только неотрицательные числа. Ноль разрешён.
Пример использования:
let
regexp =
/
ваше регулярное выражение
/
g
;
let
str =
"0 12 -5 123 -18"
;
alert
(
str.
match
(
regexp)
)
;
// 0, 12, 123
Регэксп для целого числа: \d+
.
Мы можем исключить отрицательные добавлением негативной ретроспективной проверки: (?<!-)\d+
.
Однако, если попробуем применить такой регэксп, то увидим лишний результат:
let
regexp =
/
(?<!-)\d+
/
g
;
let
str =
"0 12 -5 123 -18"
;
console.
log
(
str.
match
(
regexp)
)
;
// 0, 12, 123, 8
Как видите, оно находит 8
из -18
. То есть, берёт только цифру из числа -18
, так как это формально подходит под регулярное выражение.
Чтобы исключить такой вариант, надо убедиться, что регэксп не будет искать число с середины другого (неподходящего) числа.
Мы можем сделать это добавлением ещё одной проверки: (?<!-)(?<!\d)\d+
. Теперь (?<!\d)
гарантирует, что поиск не начнётся после цифры.
Можем объединить проверки в одну:
let
regexp =
/
(?<![-\d])\d+
/
g
;
let
str =
"0 12 -5 123 -18"
;
alert
(
str.
match
(
regexp)
)
;
// 0, 12, 123