2016-10-23 4 views
0

J'ai des résultats différents si j'utilise un pattern RegExp et quand j'utilise un nouveau pattern RegExp ... Je suis un noob avec RegExp. AlorsRegExp comment traiter avec RegExp Lorsque vous appelez le constructeur?

import flash.display.SimpleButton; 
import flash.display.Sprite; 
import flash.display.Graphics; 
import flash.text.TextField; 
import flash.ui.ContextMenu; 

    var myString1:String = "Sharsks in the sea"; 
    var pattern1:RegExp = new RegExp("^\s*|\s*$","gim"); 
    var pattern2:RegExp = new RegExp("\s*|\s*$","gim"); 
    var pTest:RegExp = /\s*|\s*$/gim; 
    var result1:String = myString1.replace(/^\s*|\s*$/gim,"_"); 
    var result2:String = myString1.replace(pattern1,"_"); 
    var result3:String = myString1.replace(/\s*|\s*$/gim,"_"); 
    var result4:String = myString1.replace(pattern2,"_"); 
    var result5:String = myString1.replace(pTest,"_"); 

    trace(result1); 
    trace(result2); 
    trace(result3); 
    trace(result4); 
    trace(result5); 

    outputs : 
    _Sharsks in the sea_ 
    _harsks in the sea_ 
    _S_h_a_r_s_k_s__i_n__t_h_e__s_e_a_ 
    __h_a_r__k__ _i_n_ _t_h_e_ __e_a_ 
    _S_h_a_r_s_k_s__i_n__t_h_e__s_e_a_ 

Quelqu'un peut-il me dire la différence entre nouvel opérateur et un modèle RegExp logique.

Je sais que c'est une question très stupide, excusez-moi, mais je suis confus ...

Répondre

1

La classe RegExp vous permet de travailler avec des expressions régulières, qui sont des modèles que vous pouvez utiliser pour effectuer recherche dans les chaînes et remplace le texte dans les chaînes. Vous pouvez créer un nouvel objet RegExp en utilisant le nouveau constructeur RegExp() ou en affectant un littéral RegExp à une variable:

var pattern1:RegExp = new RegExp("test-\\d", "i"); 
var pattern2:RegExp = /test-\d/i; 

De adobe

En d'autres termes, ils sont équivalents.

+0

Merci beaucoup @NealDavis (upvoted) mais pourquoi ai-je obtenu une sortie différente avec trace (result4); et trace (résultat5); ? Y a-t-il un moyen de me comprendre aussi facilement? Je vais essayer ça demain! Peut-être cela aura-t-il un sens immédiatement. (Je l'espère);) – tatactic

+1

Je pense que vous devrez peut-être mettre une barre oblique devant la deuxième barre oblique dans le second. –