Perhaps using Regular Expressions:
(
(lambda ( string pattern / rx result )
(setq rx (vlax-create-object "VBScript.RegExp"))
(setq result (LM:RegExExecute rx pattern string))
(vlax-release-object rx)
(and result)
)
"TEST4a4" "^TEST[0-9]*$"
)
==> nil
(defun LM:RegExExecute ( reg pat str / l )
;; © Lee Mac 2010
(mapcar
'(lambda ( prop value ) (vlax-put-property reg prop value))
'(pattern global ignorecase) (list pat actrue acfalse)
)
(vlax-for x (vlax-invoke reg 'execute str)
(setq l (cons (list (vlax-get x 'value) (vlax-get x 'firstindex)) l))
)
l
)
Not sure if the pattern is verbose however, as I haven't played around with RegEx enough...