Regex допускает только число или пустую строку
Может кто-нибудь помочь мне создать это регулярное выражение. Мне нужно, чтобы проверить, является ли строка полностью пустой (пустой), или если она содержит только положительные целые числа. Если что-то еще не получается. Это то, что я до сих пор.
/^\s*|[0-9][0-9]*/
Ответы
Ответ 1
Вы ищете:
/^(\s*|\d+)$/
Если вы хотите положительное число без начальных нулей, используйте [1-9][0-9]*
Если вам не нравятся пробелы вокруг номера, вы также можете попробовать:
/^\s*\d*\s*$/
Обратите внимание, что вы не хотите разрешать частичное совпадение, например 123
abc
, поэтому вам нужны стартовые и конечные привязки: ^...$
.
У вашего регулярного выражения есть распространенная ошибка: ^\s*|\d+$
, например, не применяет целое совпадение, равно как и то же, что и (^\s*)|(\d+$)
, чтение, пробелы в начале или цифры в конце.
Ответ 2
У Kobi есть хороший ответ, но технически вам не нужно его захватывать (если вы не собираетесь делать что-то выходное)
/^[\s\d]+$/
Или, если вам все равно, если строка полностью пуста (т.е. "")
/^[\s\d]*$/
Чтобы прояснить, я понял, что исходный вопрос означает, что пробел в строке следует игнорировать.
Ответ 3
Вы можете попробовать -
/^\d*$/
Чтобы соответствовать пробелу -
/^[\s\d\s]*$/
Ответ 4
^\d+([\.\,][0]{2})?$
Я нашел, что это сработало для меня. Разрешить любое целое число, но только десятичное число .00
Pass
- 999 90
- 100
- 100,00
- 101,00
- 1000,00
Сбой
Попробуйте в http://regexpal.com/
Ответ 5
Чтобы совместить число или пустую строку '' i.e пользователь не ввел никакого ввода, сделайте это
(^[0-9]+$|^$)
Чтобы сопоставить число, пустую строку или символ пробела
(^[0-9]+$|^$|^\s$)
Проверьте это на regex101