Bonxy Ответов: 1

Сделайте так, чтобы это регулярное выражение игнорировало пробелы


У меня есть регулярное выражение, которое соответствует десятичным числам, но игнорирует шестнадцатеричные числа, однако если число имеет пробел, оно не будет работать...

Патерн
^(\d*\.)?\d+$


20 <- this matches :-)

0x20 <- this is ignored :-)


 20  <-this doesnt match as it has a space :-(

(20 <- this doesnt match either :-(


Вы можете помочь ребятам ? :-)

Что я уже пробовал:

Я пытался
^\s(\d*\.)?\d+$
и положить \s во многих разных местах, но нет-радости.

1 Ответов

Рейтинг:
0

OriginalGriff

Ваша "пересмотренная версия":

^\s(\d*\.)?\d+$
говорит, что спереди требуется одно место, поэтому оно будет соответствовать только в том случае, если присутствует одно место.
Вы можете округлить это с помощью"*", которое говорит: "ноль из большего количества этих":
^\s*(\d*\.)?\d+$
И вы можете изменить его, чтобы разрешить скобки, если это необходимо:
^[\s\(]*(\d*\.)?\d+[\s\)]*$

Но... Я бы использовал string.Trim чтобы удалить пробелы с обоих концов, а затем использовать Double.TryParse чтобы преобразовать значение в число. Если это работает, отлично используйте числовую версию. Если это не удается, пожалуйтесь пользователю! Если он настолько глуп, чтобы ожидать "(" быть частью числа, то это его проблема...

На самом деле я бы использовал NumericUpDown для ввода, чтобы он не мог ввести его неправильно, но это зависит от вас ...