Thanks for posting your solution.  By the way, I also was able to get
my regex to work from ActionScript by storing as a String and
similarly escaping the curly braces with a backslash.  The expression
attribute on mx:RegExpValidator is expecting a String, so attempting
to store in ActionScript as RegExp type did not work for me.

So, I think the following should work for you (untested):

public var expression:String =
"^(([01]?[0-9]\{1,2\}|2[0-4][0-9]|25[0-5])\.)\{3\}([01]?[0-9]\{1,2\}|2[0-4][0-9]|25[0-5])$";

and then

<mx:RegExpValidator expression="{expression}" />

Jon

On Mon, Aug 31, 2009 at 4:52 PM, gtb104<gtb...@yahoo.com> wrote:
> The solution was to declare the regexp in the mxml, escaping the { and } 
> characters.  Once I did that, it worked as expected.
>
> <mx:RegExpValidator id="ipValidator"
>  expression="/^(([01]?[0-9]\{1,2\}|2[0-4][0-9]|25[0-5])\.)\{3\}([01]?[0-9]\{1,2\}|2[0-4][0-9]|25[0-5])$/"
>  source="{tiIPAddress}"
>  property="text"
>  trigger="{tiIPAddress}"
>  triggerEvent="change"
>  noMatchError="Invalid IP Address Format."/>
>
>
> Geoff
>
> --- In flexcoders@yahoogroups.com, "Geoffrey" <gtb...@...> wrote:
>>
>> Didn't seem to help.
>>
>> I changed the String to a RegExp, escaped and didn't escape the {} 
>> characters, and also tried with and without the [Bindable] metadata tag.  As 
>> long as the regular expression is in the actionscript file, it just doesn't 
>> work properly.  Actually, in this instance, nothing ever validates as a 
>> valid IP address.
>>
>> Geoff
>>
>> --- In flexcoders@yahoogroups.com, Ian Thomas <ian@> wrote:
>> >
>> > Geoff,
>> >    Try:
>> >
>> > public var validIPExpression:RegExp =
>> > /^(([01]?[0-9]\{1,2\}|2[0-4][0-9]|25[0-5])\.)\{3\}([01]?[0-9]\{1,2\}|2[0-4][0-9]|25[0-5])$/;
>> >
>> > instead.
>> >
>> > Could be because by directly specifying the expression, the MXML->AS
>> > parser correctly decides to treat it as a RegExp. But when directly
>> > binding to the value, binding sees it just as a String.
>> >
>> > HTH,
>> >    Ian
>> >
>> > On Thu, Aug 13, 2009 at 5:17 PM, Geoffrey<gtb104@> wrote:
>> > >
>> > >
>> > > We use the code-behind technique to attach AS to MXML. Doing this has 
>> > > caused
>> > > an interesting issue with RegExpValidator. If the regular expression is
>> > > defined in the AS file and contains a quantifier, it causes validation to
>> > > act funky.
>> > >
>> > > In the following example, if you type about 20 zeroes into the IP field 
>> > > it
>> > > goes from invalid, to valid, and back to invalid. Obviously it should be
>> > > invalid after the first zero is typed and stay that way unless a proper 
>> > > IP
>> > > is entered. However, if you take the same regExp string and put it in the
>> > > MXML file it works as expected. Note that escaping or not escaping the { 
>> > > or
>> > > } characters while the string is in the AS file has no effect on the
>> > > validation.
>> > >
>> > > Test.mxml
>> > > ---------
>> > > <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml";
>> > > xmlns:local="*"
>> > > minWidth="800" minHeight="600">
>> > >
>> > > <local:MyComp/>
>> > >
>> > > </mx:Application>
>> > >
>> > > MyComp.mxml
>> > > -----------
>> > > <?xml version="1.0" encoding="utf-8"?>
>> > > <custom:MyCompScript xmlns:mx="http://www.adobe.com/2006/mxml";
>> > > xmlns:custom="*">
>> > >
>> > > <mx:FormItem id="fiIPAddress"
>> > > label="IP Address: "
>> > > required="true">
>> > > <mx:TextInput id="tiIPAddress"/>
>> > > </mx:FormItem>
>> > >
>> > > <mx:RegExpValidator id="ipValidator"
>> > > expression="{validIPExpression}"
>> > > source="{tiIPAddress}"
>> > > property="text"
>> > > trigger="{tiIPAddress}"
>> > > triggerEvent="change"
>> > > noMatchError="Invalid IP Address Format."/>
>> > >
>> > > <!-- works if you use
>> > > expression="^(([01]?[0-9]\{1,2\}|2[0-4][0-9]|25[0-5])\.)\{3\}([01]?[0-9]\{1,2\}|2[0-4][0-9]|25[0-5])$"-->
>> > >
>> > > </custom:MyCompScript>
>> > >
>> > > MyCompScript.as
>> > > ---------------
>> > > package
>> > > {
>> > > import mx.containers.Form;
>> > >
>> > > public class MyCompScript extends Form
>> > > {
>> > > [Bindable]
>> > > public var validIPExpression:String =
>> > > "^(([01]?[0-9]{1,2}|2[0-4][0-9]|25[0-5])\.){3}([01]?[0-9]{1,2}|2[0-4][0-9]|25[0-5])$";
>> > > //public var validIPExpression:String =
>> > > "^(([01]?[0-9]\{1,2\}|2[0-4][0-9]|25[0-5])\.)\{3\}([01]?[0-9]\{1,2\}|2[0-4][0-9]|25[0-5])$";
>> > > // Neither of the above work
>> > >
>> > > public function MyCompScript()
>> > > {
>> > > super();
>> > > }
>> > > }
>> > > }
>> > >
>> > > Does this seem like a bug, or just a limitation introduced by using the
>> > > code-behind technique?
>> > >
>> > > Thanks,
>> > > Geoff
>> > >
>> > > p.s. Don't know what code-behind is?
>> > > http://learn.adobe.com/wiki/display/Flex/Code+Behind
>> > >
>> > >
>> >
>>
>
>
>
>
> ------------------------------------
>
> --
> Flexcoders Mailing List
> FAQ: http://groups.yahoo.com/group/flexcoders/files/flexcodersFAQ.txt
> Alternative FAQ location: 
> https://share.acrobat.com/adc/document.do?docid=942dbdc8-e469-446f-b4cf-1e62079f6847
> Search Archives: 
> http://www.mail-archive.com/flexcoders%40yahoogroups.comYahoo! Groups Links
>
>
>
>

Reply via email to