Целое число
Вам не нужны квадратные скобки, если вы не хотите, чтобы содержимое входило в группу захвата.Поэтому я предполагаю, что это будет хорошо для вас:
-?\d{1,8}
о, и вы должны использовать якоря, чтобы гарантировать, что полная строка соответствует вашему шаблону, а не только подстроке.
^-?\d{1,8}$
^
соответствует началу строки
$
соответствует концу строки
Десятичное число
Попробуйте что-нибудь по
^-?\d{1,23}\.\d{1,8}$
Открытые вопросы здесь:
Является ли что-то необязательным, это означает, что некоторые из этих форматов будут разрешены: 1. или .1 или только 1?
Какой разделитель фракций .
или ,
или оба?
Если вы хотите сделать необязательную часть, поместите ее в группу без захвата и поместите?
за ним ((?:Pattern)?
)
Чтобы разрешить обоим разделителям использовать класс символов, подобный этому [.,]
вместо \.
.
Сумма
Отличается ли он от десятичного?
Пользовательский десятичный
Если я правильно понимаю, то он может иметь максимальную длину of 30. И обе части до и после точки могут быть максимумом 29. Я полагаю, тогда, когда моя не дробная часть равна 29, тогда моя дробь может быть максимум 1.
Так что я бы держал ее вдоль десятичного регулярного выраженияи добавьте дополнительную проверку длины, используя утверждение предпросмотра (надеясь, что ваш движок регулярных выражений его поддерживает)
(?=^.{1,30}$)^-?\d{1,23}\.\d{1,8}$
Это утверждение предпросмотра (?=^.{1,30}$)
сначала проверяет, если длина всей строки составляет от 1 до 30 символов, если это правдазатем проверяет шаблон.