I believe the intention of the Player team was for AS3's RegExp class to
implement the Ecmascript-262 spec. If it's not in compliance, it would
be good to file a bug.

 

Gordon Smith

Adobe Flex SDK Team

 

________________________________

From: [email protected] [mailto:[EMAIL PROTECTED] On
Behalf Of Josh McDonald
Sent: Monday, August 11, 2008 5:26 PM
To: [email protected]
Subject: Re: [flexcoders] Re: Why Doesn't This JavaScript Regular
Expression Work in AS3?

 

I don't really do much JS these days (yay!), but Flash's regex is pretty
close to the "standard", but you've just gotta get your head in and out
of "regex space" and think of things like the beginning and end of the
string, as well as what you're trying to test, and what you're trying to
match, etc.

Plus, I think JS has /g set by default, Flash doesn't. But that might be
wrong :)

-J

On Tue, Aug 12, 2008 at 3:56 AM, jwebbsuccess
<[EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]> > wrote:

Josh,

You're pretty awesome off the top of your head.  Your change works.
Thanks a bunch.

Do you have a general statement about the difference between JS and
AS3 regular expressions by chance?



--- In [email protected] <mailto:[email protected]> ,
"Josh McDonald" <[EMAIL PROTECTED]> wrote:
>
> Off the top of my head:
>
> var regex = /^true,\s*\$/;
>
> result = regex.test(str);
>

> On Mon, Aug 11, 2008 at 3:54 AM, jwebbsuccess <[EMAIL PROTECTED]>wrote:

>
> > Exactly, haykelbj.  What I need help with is rewriting the regular
> > expression for the isCurrency test so that the strings "true,$" or
> > "true, $" will return true in AS3.  I'm not so hot at writing
> > regexps...  isCurrency returns true on those two strings in
> > JavaScript; I don't know why they return false in AS3.
> >
> >
> >
> > --- In [email protected]
<mailto:[email protected]> , "haykelbj" <haykelbj@> wrote:
> > >
> > > The JavaScript and ActionScript codes are not doing exactly the
same
> > > thing. In your AS code, at a certain point you are doing the
following
> > > assignment:
> > > _testValue = qualifier.toLowerCase()+ ",$";
> > > This will result in _testValue = "true,$" which will make the test
> > > isCurrency.test(_testValue) return false which is right because
> > > isCurrency's regex is /^, ?\$/.
> > >
> > >
> > > --- In [email protected]
<mailto:[email protected]> , "jwebbsuccess" <jwebb@> wrote:
> > > >
> > > > I have a regular expression that works in JavaScript and does
not work
> > > > in ActionScript 3, even though both languages supposedly use the
> > > > ECMAScript standard for regular expressions.  I need the
expression to
> > > > return true when ever it tests the two strings below:
> > > >
> > > > true,$
> > > > true, $
> > > >
> > > > I need the expression to return false whenever the string is
not the
> > > > same as one of the two above.
> > > >
> > > > I've attached the HTML that demonstrates that the regular
expressions
> > > > work in JavaScript.  Can you modify the same expressions in
the Flex
> > > > code, provided below, to produce the same result?
> > > >
> > > > Thanks.
> > > >
> > > > ---------------------------------------------------------------
> > > > <html>
> > > > <head>
> > > > <style type="text/css">
> > > > #doc {background-color:#EFEFEF;text-align:center;}
> > > > #testBlock
> > > >
> > >
> >
{background-color:#FFFFFF;text-align:left;width:600px;height:500px;margi
n:
> > > > 0 auto;border:1px solid #FF9900;padding:0 20px;}
> > > > .regexp {color:#FF0000;}
> > > > .testval {color:#00CC00;}
> > > > </style>
> > > > </head>
> > > > <body id="doc">
> > > > <div id="testBlock">
> > > >   <h1 id="test1"></h1>
> > > >   <h1 id="test2"></h1>
> > > >   <h1 id="testValue"></h1>
> > > >   <p>The only two true values should be "true,$" and "true, $";
> > > > everything else should be false.</p>
> > > >   <script type="text/javascript">
> > > >
> > > >             //TEST YOUR REGULAR EXPRESSIONS HERE.
> > > >               var re1 = /^true\b(.*)$/;
> > > >               var re2 = /^, ?\$/;
> > > >               var str = "true,$";
> > > >
> > > >             //THE VALUES USED IN YOUR TESTS WILL APPEAR IN THE
PAGE...
> > > >               document.getElementById( "test1" ).innerHTML =
"Regular
> > Expression
> > > > 1: <span class='regexp'>" + re1 + "</span>";
> > > >               document.getElementById( "test2" ).innerHTML =
"Regular
> > Expression
> > > > 1: <span class='regexp'>" + re2 + "</span>";
> > > >               document.getElementById( "testValue" ).innerHTML
= "Test
> > Value:
> > > > <span class='testval'>" + str + "</span>";
> > > >
> > > >               if ( ( resultArray = re1.exec( str ) ) != null )
> > > >               {
> > > >                 alert( "Test 1 successful" );
> > > >                 if ( re2.test( resultArray[ 1 ] ) )
> > > >                 {
> > > >                     alert( "Test 2 successful" );
> > > >                 }
> > > >                     else
> > > >                     {
> > > >                             alert( "Test 2 failed" );
> > > >                     }
> > > >               }
> > > >             </script>
> > > > </div>
> > > > </body>
> > > > </html>
> > > >
> > > > ---------------------------------------------------------------
> > > >
> > > > <?xml version="1.0"?>
> > > > <!-- wrapper/GetURLInfo.mxml -->
> > > > <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml
<http://www.adobe.com/2006/mxml> "
> > > > creationComplete="runRegExpTest( event )">
> > > > <mx:Script>
> > > > <![CDATA[
> > > > import mx.events.FlexEvent;
> > > > import mx.controls.Alert;
> > > >
> > > > [Bindable] private var _test1:String = "";
> > > > [Bindable] private var _test2:String = "";
> > > > [Bindable] private var _testValue:String = "";
> > > >
> > > > private function runRegExpTest( e:FlexEvent ):void
> > > > {
> > > >       var isTrue:RegExp =/^true\b(.*)$/;
> > > >       var isCurrency:RegExp =/^, ?\$/;
> > > >       var qualifier:String = "TRUE";
> > > >       _test1 = isTrue.toString();
> > > >       _test2 = isCurrency.toString();
> > > >       var msg1:String;
> > > >       var msg2:String;
> > > >
> > > >       if ( isTrue.test( qualifier.toLowerCase() ) )
> > > >       {
> > > >             _testValue = qualifier.toLowerCase()+ ",$";
> > > >             msg1 = "The qualifier is: " +
qualifier.toLowerCase() + ",
> > > > the test value is ( " + _testValue + " ) and returns: " +
> > > > isCurrency.test( _testValue ).toString();
> > > >             trace( msg1 );
> > > >             Alert.show( msg1 );
> > > >             if ( isCurrency.test( _testValue ) )
> > > >             {
> > > >                   msg2 = "The test is SUCCESSFUL!";
> > > >                   trace( msg2 );
> > > >                   Alert.show( msg2 );
> > > >             }
> > > >             else
> > > >             {
> > > >                   msg2 = "The 'isCurrency' RegExp is
UNSUCCESSFUL";
> > > >                   trace( msg2 );
> > > >                   Alert.show( msg2 );
> > > >             }
> > > >       }
> > > > }
> > > > ]]>
> > > > </mx:Script>
> > > > <mx:Form color="#FCFCFC" cornerRadius="10" borderStyle="outset"
> > > > backgroundColor="#FAF7F7">
> > > >       <mx:FormItem label="'isTrue' regular expression test:"
> > > > fontSize="18" color="#000000">
> > > >             <mx:Label text="{ _test1 }" fontSize="18"
color="#BF5100"
> > > > fontWeight="bold"/>
> > > >       </mx:FormItem>
> > > >       <mx:FormItem label="'isCurrency' regular expression test:"
> > > > fontSize="18" color="#000000">
> > > >             <mx:Label text="{ _test2 }" fontSize="18"
color="#BF5100"
> > > > fontWeight="bold"/>
> > > >       </mx:FormItem>
> > > >       <mx:FormItem label="'test value is: " fontSize="18"
> > > color="#000000">
> > > >             <mx:Label text="{ _testValue }" fontSize="18"
> > > > color="#BF5100" fontWeight="bold"/>
> > > >       </mx:FormItem>
> > > > </mx:Form>
> > > > </mx:Application>
> > > >
> > >
> >
> >
> >
> > ------------------------------------
> >
> > --
> > Flexcoders Mailing List
> > FAQ:
http://groups.yahoo.com/group/flexcoders/files/flexcodersFAQ.txt
<http://groups.yahoo.com/group/flexcoders/files/flexcodersFAQ.txt> 
> > Search Archives:
> > http://www.mail-archive.com/flexcoders%40yahoogroups.comYahoo
<http://www.mail-archive.com/flexcoders%40yahoogroups.comYahoo> ! Groups
> > Links
> >
> >
> >
> >
>
>

> --
> "Therefore, send not to know For whom the bell tolls. It tolls for
thee."
>
> :: Josh 'G-Funk' McDonald

> :: 0437 221 380 :: [EMAIL PROTECTED]

>



------------------------------------

--
Flexcoders Mailing List
FAQ: http://groups.yahoo.com/group/flexcoders/files/flexcodersFAQ.txt
<http://groups.yahoo.com/group/flexcoders/files/flexcodersFAQ.txt> 
Search Archives:
http://www.mail-archive.com/flexcoders%40yahoogroups.comYahoo
<http://www.mail-archive.com/flexcoders%40yahoogroups.comYahoo> ! Groups
Links


   (Yahoo! ID required)

   mailto:[EMAIL PROTECTED]
<mailto:[EMAIL PROTECTED]> 






-- 
"Therefore, send not to know For whom the bell tolls. It tolls for
thee."

:: Josh 'G-Funk' McDonald
:: 0437 221 380 :: [EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]> 

 

Reply via email to