2016-10-23 76 views
0

如果我使用RegExp模式並使用新的RegExp模式時,我有不同的結果... 我是RegExp的noob。 所以RegExp如何處理RegExp當您打電話給建築師時?

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_ 

誰能告訴我新的運營商和邏輯正則表達式模式之間的區別。

我知道這是一個非常愚蠢的問題,所以請原諒我,但我很困惑...

回答

1

RegExp類允許使用正則表達式,它們的模式,你可以用來執行工作在字符串中搜索並替換字符串中的文本。 可以通過使用新的正則表達式()構造或通過分配一個RegExp字面給一個變量創建一個新的RegExp對象:

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

adobe

換言之,它們是等價的。

+0

非常感謝你@NealDavis(upvoted),但爲什麼我用trace(result4)得到不同的輸出;和trace(result5); ?有沒有辦法很容易找到我? 明天我會試試這個!也許它會立即有意義。 (我希望它);) – tatactic

+1

我想你可能需要在第二個斜槓前面加上一個斜槓。 –