on 2023 May 08 8:03 AM
what is the best way to validate a string against IP Address?
I tried using this, it works.
select 'is valid ip address' where '192.168.0.11' similar to '[0-9]+.[0-9]+.[0-9]+.[0-9]+'
But I have problem with this
select 'is valid ip address' where '192.16845444.0.11' similar to '[0-9]+.[0-9]+.[0-9]+.[0-9]+'
Request clarification before answering.
Here's an REGEXP sample for IP addresses from the docs – I have not tested it myself:
((2(5[0-5]|[0-4][0-9])|1([0-9][0-9])|([1-9][0-9])|[0-9])\\.){3}(2(5[0-5]|[0-4][0-9])|1([0-9][0-9])|([1-9][0-9])|[0-9])
You may also check general regex samples for IP addresses like these, just make sure the syntax is also supported by SQL Anywhere.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Oh, I found it:
select 'is valid ip address' where '192.168.0.1' similar to '[0-9]?[0-9]?[0-9]?.[0-9]?[0-9]?[0-9]?.[0-9]?[0-9]?[0-9]?.[0-9]?[0-9]?[0-9]?'
but is there another simpler one?
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
This one should do the trick:
'((2(5[0-5]|[0-4][0-9])|1([0-9][0-9])|([1-9][0-9])|[0-9]).){3}(2(5[0-5]|[0-4][0-9])|1([0-9][0-9])|([1-9][0-9])|[0-9])'
Just to clarify: This is the same expression as the doc sample from my answer with the subtle distinction that is is meant for SIMILAR TO and there does not need to mask the dot whereas the expression from the sample is meant for REGEXP and therefore needs to mask the dot via '\\.' to prevent it from being treated as a meta character...
Correct. I referred to the example given by Baron.
By the way in the SQL Anywhere document portal the example for IP addresses in the Regular Expressions Examples is empty.
I left a comment on that doc page mentioning the empty text.
User | Count |
---|---|
75 | |
30 | |
9 | |
8 | |
7 | |
6 | |
6 | |
5 | |
5 | |
5 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.