2016-10-23 74 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

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