2013-11-29 3 views
2

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

5414.1;123;412.1;41241; ...

Я пытался использовать [0-9;\.]*, но я не могу сделать он соответствует только шаблонам, которые содержат одну (1) точку после текста и до ;.

Я проверил, используя http://regexpal.com/.

ответ

1

Это тоже не идеально, но уже в непосредственной близости ... например, это разрешено -01.5.

((-|)[0-9]+(\.[0-9]*[1-9]|)\;)*(-|)[0-9]+(\.[0-9]*[1-9]|) 

Или вы можете перенести все (x |) -подобное выражение на x? (От @OGHaza)

+1

Может быть придирки, но с использованием 'х' кажется намного яснее, чем '(х |) '. – OGHaza

4

Если данные должны заканчиваться ;:

(-?\d+(\.\d+)?\;)+ 

В противном случае:

(-?\d+(\.\d+)?)(;-?\d+(\.\d+)?)*;? 

Это не позволит пустой ввод, но вы можете добиться такого поведения путем замены + в первом примере с * и путем обертывания второго в (...)?. ?

2

вы также можете использовать этот шаблон

^(?:-?\d+[.;]?)+$ 
Смежные вопросы