I have tried to use it in the following format:
MATCH(CLI:inscricao,'^[0-9]$',Match:Regular)
But it does not work
I have tried to use it in the following format:
MATCH(CLI:inscricao,'^[0-9]$',Match:Regular)
But it does not work
The pattern you’re using matches 1-digit unsigned numbers only. Probably, you need in
MATCH(CLI:inscricao,'^[0-9]+$',Match:Regular)
or
MATCH(CLI:inscricao,'^[+-]*[0-9]+$',Match:Regular)
if numbers can have a sign.
Define “does not work” ?
I think that depends on how many digits there are in the string.
This fails (returns true):
MESSAGE(NUMERIC('123456456078978916456074894991526304859x'))
This works, with one less digit (returns false):
MESSAGE(NUMERIC('12345645607897891645607489499526304859x'))
NUMERIC is nothing else as the call to the C Library function strtod() with the parameter converted from STRING to CSTRING. The buffer to hold converted CSTRING value is the 40 characters long including terminating 0-character.
Unlike Numeric() with Match() I think trailing spaces matter, so if you want to allow spaces on the end you must Clip().
Your use of the $ modifier to match to the end would indicate you want all numbers with No trailing spaces, so this probably does not apply here, just thought I would mention it.
Asterisk *
would allow [+-]
to occur Zero or More times +-+1234
You probably want Question Mark ?
that allows Zero or ONE + -
… so ^[+-]?
For ClarionMag I had an article on MATCH and STRPOS with a small simple Match Tester tool that let you test a RegEx expression against 4 different test strings. It helps figure out the right code without compiling.
@vitesse always seems to find stuff on ClarionMag when I cannot. Next week I’ll find it and post it on GitHub.
ask and ye shall receive
Using MATCH In Filters and Regular Expressions
by Carl Barnes
Published 2001-07-03
attached with thanks to Dave Harms as always.
cmag-2001-07.pdf (1.0 MB)
v3n6match.zip (4.3 KB)