OCLinEcore and Regex to create valid IPv4 string

624 views Asked by At

I have an Ecore model, where I'm trying to add some OCL constraints.

My problem comes when I try to make a property (a string) that is in valid IPv4 form. I guess I should use a regular expression, but I have no idea at all about how to use regex on OCLinEcore.

2

There are 2 answers

0
sirius_overflow On BEST ANSWER

As of Eclipse Juno, you can use regular expressions in OCL. The function to call on it is matches(regex), just like in Java.

context Packet
inv ValidIPv4 : ip.matches('\b([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\b')

Source: http://help.eclipse.org/juno/index.jsp?topic=%2Forg.eclipse.ocl.doc%2Fhelp%2FCompleteOCLTutorial.html

If you have a previous version of Eclipse, then I suggest adding a Java constraint on your Ecore element, then validate your element through the generated Java template code.

1
buckley On

As for the regex part:

\b([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\b

Matches 0.0.0.0 through 999.999.999.999 Use this fast and simple regex if you know the data does not contain invalid IP addresses. Each of the 4 numbers is stored into a capturing group, so you can access them for further processing.