Jacob Krieg
Jacob Krieg

Reputation: 3184

Match float numbers separated by semicolon

I use a regexp validator and I want to restrict the use of anything but the pattern:

5414.1;123;412.1;41241;...

I tried to use [0-9;\.]* but I can't make it match only patterns which contain one(1) point after the text and before ;.

I tested using http://regexpal.com/.

Upvotes: 2

Views: 137

Answers (4)

peterh
peterh

Reputation: 1

That is not perfect, too, but is already in the near... for example it allowed -01.5.

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

Instead an (x|) -like expression you can also use x?. (Thanks @OGHaza)

Upvotes: 1

alpha bravo
alpha bravo

Reputation: 7948

you could also use this pattern

^(?:-?\d+[.;]?)+$

Upvotes: 2

user3050022
user3050022

Reputation: 41

^(\d+(\.\d+)?;)+$

the ^$ will prevent accepting a part of the string

Upvotes: 4

xsc
xsc

Reputation: 6073

If the data has to end with a ;:

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

Otherwise:

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

These will not allow empty input but you can achieve that behaviour by replacing the + in the first example with * and by wrapping the second one in (...)?.

Upvotes: 4

Related Questions