How to validate version number using regex pattern

I have to validate version number pattern for following examples:

A1
aabc1
AabC134
aabc12.2
aA1.2.3
0.1.1
0.0.2
a.b.c
a.1.2
a.0.0
1.0.0
1.0
1

Basically it should allow alphanum in all three parts (split parts by dot) but it cannot be:

0
0.0.0
000.000.000
0000.00.00

I have tried this regex but it allows zeros:

/([A-Za-z\d]+)?(.*[A-Za-z\d]+)?(.*[A-Za-z\d]+)$

Can it be modified to achieve above results?

Answers:

Answer

You may use

/^(?![0.]+$)[A-Za-z0-9]+(?:\.[A-Za-z0-9]+){0,2}$/

Or,

/^(?![0.]+$)[A-Z\d]+(?:\.[A-Z\d]+){0,2}$/i

See the regex demo

Details

  • ^ - start of string
  • (?![0.]+$) - no just zeros / dots till the end of string
  • [A-Za-z0-9]+ - one or more digits/letters
  • (?:\.[A-Za-z0-9]+){0,2} - 0, 1 or 2 repetitions of . and 1+ digits or letters
  • $ - end of string

Regex graph:

enter image description here

Answer

I might just use negative lookaheads to assert that the blacklisted version numbers do not appear, and otherwise proceed along the lines of what you are already doing:

 ^(?!^(?:0|0\.0\.0|000\.000\.000|0000\.00\.00)$)[A-Za-z0-9]+(?:\.[A-Za-z0-9]+){0,2}$

Demo

Tags

Recent Questions

Top Questions

Home Tags Terms of Service Privacy Policy DMCA Contact Us

©2020 All rights reserved.