Deprecated: Assigning the return value of new by reference is deprecated in /var/www/omflash.dk/public_html/wp-includes/cache.php on line 33

Deprecated: Assigning the return value of new by reference is deprecated in /var/www/omflash.dk/public_html/wp-content/plugins/sem-subscribe-me2/sem-subscribe-me.php on line 511

Strict Standards: call_user_func_array() expects parameter 1 to be a valid callback, non-static method UltimateTagWarriorActions::ultimate_query_vars() should not be called statically in /var/www/omflash.dk/public_html/wp-includes/functions.php on line 1252

Strict Standards: call_user_func_array() expects parameter 1 to be a valid callback, non-static method UltimateTagWarriorActions::ultimate_posts_where() should not be called statically in /var/www/omflash.dk/public_html/wp-includes/functions.php on line 1252

Strict Standards: call_user_func_array() expects parameter 1 to be a valid callback, non-static method UltimateTagWarriorActions::ultimate_posts_join() should not be called statically in /var/www/omflash.dk/public_html/wp-includes/functions.php on line 1252

Strict Standards: call_user_func_array() expects parameter 1 to be a valid callback, non-static method UltimateTagWarriorActions::ultimate_tag_templates() should not be called statically in /var/www/omflash.dk/public_html/wp-includes/functions.php on line 1329
Nyt i ActionScript 3 - Del 4 - Regular Expressions - omFlash();
Strict Standards: call_user_func_array() expects parameter 1 to be a valid callback, non-static method UltimateTagWarriorActions::ultimate_add_ajax_javascript() should not be called statically in /var/www/omflash.dk/public_html/wp-includes/functions.php on line 1329

Nyt i ActionScript 3 - Del 4 - Regular Expressions


Deprecated: preg_replace() [function.preg-replace]: The /e modifier is deprecated, use preg_replace_callback instead in /var/www/omflash.dk/public_html/wp-includes/functions-formatting.php on line 83

Strict Standards: call_user_func_array() expects parameter 1 to be a valid callback, non-static method UltimateTagWarriorActions::ultimate_the_content_filter() should not be called statically in /var/www/omflash.dk/public_html/wp-includes/functions.php on line 1252

Strict Standards: Non-static method UltimateTagWarriorActions::regExEscape() should not be called statically in /var/www/omflash.dk/public_html/wp-content/plugins/UltimateTagWarrior/ultimate-tag-warrior-actions.php on line 638

Strict Standards: Non-static method UltimateTagWarriorActions::regExEscape() should not be called statically in /var/www/omflash.dk/public_html/wp-content/plugins/UltimateTagWarrior/ultimate-tag-warrior-actions.php on line 638

Strict Standards: Non-static method UltimateTagWarriorActions::regExEscape() should not be called statically in /var/www/omflash.dk/public_html/wp-content/plugins/UltimateTagWarrior/ultimate-tag-warrior-actions.php on line 639

Strict Standards: Non-static method UltimateTagWarriorActions::regExEscape() should not be called statically in /var/www/omflash.dk/public_html/wp-content/plugins/UltimateTagWarrior/ultimate-tag-warrior-actions.php on line 639

Strict Standards: Non-static method UltimateTagWarriorActions::replaceTagWithLink() should not be called statically in /var/www/omflash.dk/public_html/wp-content/plugins/UltimateTagWarrior/ultimate-tag-warrior-actions.php on line 643

Det er ikke tilfældigt at regular expressions har fået deres helt eget kapitel i “Programming ActionScript 3″, for det er så absolut en af de helt store nyheder i ActionScript 3, og noget som vil gøre livet lettere for alle der har brug for at validere og manipulere tekststrenge.

Hvad dælen er et regular expression?
Et regular ekspression er en streng der beskriver et mønster.
Se, det var da nemt nok, eller?

Regular expressions kan på en gang være ultra simple og ultra komplekse, og jeg kan ikke påstå at jeg selv har 100% styr på dem, så fremfor at jeg selv får skrevet en masse vrøvl, så vil jeg blot henvise til et par gode kilder om emnet:
Regular-Expressions.info
An Introduction to Regular Expression with VBScript

Og ja, ligesom mit sidste link, så er de fleste artikler om regular expressions rundt omkring på nettet p.t. rettet mod andre sprog end ActionScript, men de kan alligevel være med til at fortælle og forklare hvad et regular expression er.
Herunder vil jeg så komme med et enkelt eksempel eller to på hvordan du kan bruge dem i ActionScript.

Helt grundlæggende, så kan regular expressions primært bruges til 2 ting:
- Validering af strukturen af en streng
- Erstatte eller strippe bestemte tegn i en streng

String.match()
Funktionen match() bruges til at teste om et givent mønster findes i en tekststreng.

Det kan man for eksempel bruge til at teste om et postnummer er gyldigt, da alle danske postnumre jo skal være på præcis 4 tegn, og der må kun bruges tal.
Tilsvarende kan man validere kreditkortnumre, navne, personnumre m.m.

Her et lille kodeeksempel på hvordan man kan validere en email:

function checkEmail(Email:String):Boolean {
var pattern:RegExp = /([0-9a-zA-Z]+[-._+&])*[0-9a-zA-Z]+@([-0-9a-zA-Z]+[.])+[a-zA-Z]{2,6}/

	if(Email.match(pattern) == null) {
		return false;
	} else {
		return true;
	}

}

trace(checkEmail(”email@@domain.dk”)); //false
trace(checkEmail(”email@domain.dk”)); //true
trace(checkEmail(”email@domaindk”)); //false

Regular expressions kan være en meget religiøs affære, mange meninger om hvordan de skal struktureres, så for at undgå diskussion, så er selve det pattern som jeg bruger nappet direkte fra Adobe’s dokumentation, så skyd skylden på dem hvis det ikke virker som du mener det bør ;-)

Man skal også huske på, at et regular expression kun tester om en streng matcher et bestemt mønster, ikke om værdien rent faktisk findes.
Hvis man for eksempel ønsker at validere et postnummer 100%, så er man også nød til at have en database med samtlige postnumre, som man så kan lave et opslag i. Bare fordi at strengen “8976″ overholder mønstret, så findes der ikke nødvendigvis sådan et postnummer i virkeligheden.

String.replace()
Replace() funktionen bruges til erstatte et mønster med noget andet, eller ingenting (stripping).

I det her lille eksempel har jeg lavet en funktion, der fjerner alle html-tags fra en tekststreng:

function stripHtml(Html:String):String {
	var pattern:RegExp = /<(.|n)+?>/g;
	return Html.replace(pattern, “”);
}
trace(stripHtml(”Hej”)); //Hej
trace(stripHtml(”<strong>Hej</strong>”)); //Hej

Det lille g, der står som det sidste i mønstret angiver at replacen skal gøres globalt, altså i hele strengen.
Er det g der ikke, så er det kun det første sted hvor mønstret matcher at erstatningen ville blive lavet.

Nå, det var en lille lynbørge introduktion til regular expressions i ActionScript 3.
Da regular expressions kan bruges i et utal af situationer er det et kæmpe stort emne, og efterhånden som jeg selv tager det i brug skal jeg nok forsøge at lave lidt flere artikler om emnet.



Del:These icons link to social bookmarking sites where readers can share and discover new web pages.
  • del.icio.us
  • digg

Skriv en kommentar