2015-01-02 3 views
0

Я пытаюсь создать регулярное выражение, которое будет принимать в качестве значений только следующиетолько цифры, точки, запятой и слэш

1 
1.1 
.1 
1,1 
,1 
1/1 
11 
111 
1111 
and so on... 

или еще: Число, которое может сопровождаться точкой или запятой или косой чертой и числом в конце.

\d*(?:\.|\,|\/)\d 

используя это регулярное выражение я только захватить 1,1 0,1 1,1, 1, но я не могу захватить, если пользователь будет вводить только номер, например, 1 или 11 или любое целое число с неизвестным количеством цифр.

+0

В какой версии регулярного выражения вы используете? – eatonphil

+0

Я хочу использовать его как шаблон в поле ввода HTML. Я не знаю версию. – Kiki

ответ

2

Регулярное выражение может быть изменен

\d*([.,\/]?\d+) 

Regex Demo

+0

Спасибо за ответ, проверяя это regexpr в regexr.com и в программном обеспечении expresso, он не фиксирует значения, которые я хочу. – Kiki

+0

@ user3677132 У меня была небольшая опечатка в ответе. Исправленный. См. Edit – nu11p01n73R

+0

Я проверил его снова, и это сработало. Это не происходит, хотя захват .1 или, 1, но это не является обязательным для проекта, который я создаю. Большое спасибо. – Kiki

0
\d*(?:\.|\,|\/\d+)* 

Попробуйте this.See демо.

https://www.regex101.com/r/fG5pZ8/21

+0

Интересно. Я не уверен, нужна ли группа, не участвующая в захвате, или эта группа должна быть жадной. Я думаю, что это зависит от того, будет ли '1.1.1.1.1.1.1.1.1' или подобное быть частью тестовых данных. –

2

Вот короткий один, что я думаю, что отвечает вашим потребностям:

\d?[.,\/]?\d+ 

шаблон

\ д? : одна дополнительная цифра соответствует 1,1, 1/1 или 1,1. Если действуют 1111.1111 и т. Д., Измените на \ d *

[., /]? : дополнительный период, запятая или косая черта

\ d +: одна или несколько цифр.

чтение «или точка (...) и число в конце», это могло бы быть более точными (возможно, вы имеете в виду одну и только одну цифры после запятой/слэш/запятой?)

\d*[.,\/]?\d 

Которого

\ д *: [., /] Любое количество цифр

?: дополнительный ограничитель

\ д: один цифры

+0

Спасибо за ответ. Это тоже работает :) – Kiki

0

Если вы проверяете ввод пользователя на клавиатуре или что-то,
, вам понадобится эта форма 1,.

Это должно охватывать все основания.

# ^(?:\d+(?:[.,/]\d*)?|[.,/]\d+)$ 

^ 
(?: 
     \d+     # Forms 1 or 1, or 1,1 
     (?: [.,/] \d*)? 
    |     # or, 
     [.,/] \d+   # Form ,1 only 
) 
$ 
Смежные вопросы