Checking legality of a string

Ken Ray kray at sonsothunder.com
Wed Jan 25 13:39:42 EST 2006


On 1/25/06 11:20 AM, "Martin Baxter" <mb.ur at harbourhost.co.uk> wrote:

> function isvalid mystring
>    return not (matchtext(mystring,"[^a-zA-Z0-9_]+?"))
> end isvalid
> 
> # there is a match if any character other than a-z A-Z 0-9 or _ is found
> # in mystring
> # using not inverts the result so that the function returns true
> # if the string is valid.

Looks good, Martin, but if the original intention is "isValid", not
"isNotValid", I'd personally remove the "double-negatives":

 function isvalid mystring
    return (matchtext(mystring,"^[a-zA-Z0-9_]+$"))
 end isvalid

The other possibility, if you want to depend on what PCRE's character
matching table says, is to use the "any 'word' character" option \w:

 function isvalid mystring
    return (matchtext(mystring,"^\w+$"))
 end isvalid

The docs (at http://www.pcre.org/man.txt) says this about \w:

   A "word" character is any letter or digit or the underscore
   character, that is, any character which can be part of a Perl
   "word". The definition of letters and digits is controlled by
   PCRE's character tables, and may vary if local-specific
   matching is taking place. For exaemple, in the "fr" (French)
   locale, some character codes greater than 128 are used for
   accented characters and there are matched by \w.


Anyway, my 2 cents...

Ken Ray
Sons of Thunder Software
Web site: http://www.sonsothunder.com/
Email: kray at sonsothunder.com





More information about the use-livecode mailing list