Предполагая, что вы просто хотите десятичных целые чисел в обычной форме (например, 1000
будет действительным, 1e3
[такое же число в экспоненциальном] бы не так), регулярное выражение подтвердите, что это \d+
, что означает «одна или несколько цифр».
Чтобы ваше регулярное выражение разрешало это, вам понадобится чередование , которое позволяет использовать любую из двух альтернатив. Чередование представлено в форме first|second
, где first
и second
являются альтернативами.
Поскольку текущее выражение имеет «начало» и «конец» входные утверждения (^
и $
), мы либо хотим включить те во второй альтернативе, а также, или положить все чередование в не-захвате группа.
Так как:
/^M{0,4}(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3})$|^\d+$/
// Note -----------------------------------------------------^^^^^^
(on regex101)
или
/^(?:M{0,4}(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3})|\d+)$/
// ^^^ ^^^^^
(on regex101)
Обратите внимание, что ваше исходное выражение имеет несколько захвата групп (но Безразлично» t полностью состоит из захватов); если вы хотите захватить\d+
часть, вы бы положили ()
вокруг него.
Можете ли вы еще раз объяснить, какие виды ввода должны пройти проверку? Может ли арабская цифра появляться внутри римской цифры? Если нет, то комментарий @Wiktor должен сделать трюк. –
@ WiktorStribiżew: не совсем хороший дубликат. – Cerbrus
@TimBiegeleisen: Я знаю, где я говорю, что «нормальные» целые числа могут означать разные вещи для разных людей ... в моем случае я просто имел в виду 1, 2, 3, ... –