Len,
When you use code inside eval(), it is executed in the chosen dialect
(default is java). So, the regexp of your first rule is parsed and executed
in java and is correct.
When you use code outside eval(), it is parsed by the Drools parser and
the drools parser do not require the extra '\' to escape escape-codes. See
the examples bellow:
java: "^[a-zA-Z0-9\\!\\#\\$\\%\\&]"
equivalent drools regexp: "^[a-zA-Z0-9\!\#\$\%\&]"
If you change your regexp to use single '\' instead of double, it should
work fine.
[]s
Edson
2007/11/14, Carlsen, Len <len.carlsen(a)ubc.ca>:
Hi,
I have an email validation regex where the mvel matches doesn't seem to
work. I have created 2 rules where test1 uses the Java String matches and
test2 uses the mvel matches. Test1 works but test2 doesn't. I am using
Drools 4.0.3 and JDK 1.6.0_02.
*rule* "Test1"
*when*
// This works
email : String()
*eval*( !email.*matches*(
"^[a-zA-Z0-9\\!\\#\\$\\%\\&\\'\\*\\+\\-\\/\\=\\?\\^\\_\\`\\{\\|\\}\\~]+(\\.[a-zA-Z0-9\\!\\#\\$\\%\\&\\'\\*\\+\\-\\/\\=\\?\\^\\_\\`\\{\\|\\}\\~]+)*(a)[a-zA-Z0-9]([a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(\\.[a-zA-Z0-9]([a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*\\.[a-zA-Z]{2,6}$")
)
*then*
System.out.println( "1-Invalid Email Address: " + email );
*end*
*rule* "Test2"
*when*
// This doesn't work
email : String( toString *not* *matches*
"^[a-zA-Z0-9\\!\\#\\$\\%\\&\\'\\*\\+\\-\\/\\=\\?\\^\\_\\`\\{\\|\\}\\~]+(\\.[a-zA-Z0-9\\!\\#\\$\\%\\&\\'\\*\\+\\-\\/\\=\\?\\^\\_\\`\\{\\|\\}\\~]+)*(a)[a-zA-Z0-9]([a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(\\.[a-zA-Z0-9]([a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*\\.[a-zA-Z]{2,6}$")
*then*
System.out.println( "2-Invalid Email Address: " + email );
*end*
Here's the output using email addresses x.x(a)x.com (valid) and
x.xx.com
(invalid):
test1-Invalid Email Address:
x.xx.com
test2-Invalid Email Address: x.x(a)x.com
test2-Invalid Email Address:
x.xx.com
The regex expressions are exactly the same. Am I doing something wrong
here?
Thanks,
Len
_______________________________________________
rules-users mailing list
rules-users(a)lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users
--
Edson Tirelli
Software Engineer - JBoss Rules Core Developer
Office: +55 11 3529-6000
Mobile: +55 11 9287-5646
JBoss, a division of Red Hat @
www.jboss.com