AS3 - 如何正确地逃避正则表达式

时间:2012-08-28 11:37:40

标签: regex actionscript-3 syntax

我在AS3中有一些使用内联AS3正则表达式语法定义的正则表达式,如:

  • /\/\*[\s\S]*?\*\//gm

我想将其转换为AS3 RegEx类构造函数,如:

  • new RegExp('/\/\*[\s\S]*?\*\//', "gm")

我不确定是否必须逃避反斜杠。你知道怎么转换吗?


    /**  ------------------------- Regular Expressions ---------------------------- */

    public static var multiLineCComments:RegExp     = /\/\*[\s\S]*?\*\//gm;
    public static var singleLineCComments:RegExp        = /\/\/.*$/gm;
    public static var singleLinePerlComments:RegExp = /#.*$/gm;
    public static var doubleQuotedString:RegExp     = /"([^\\"\n]|\\.)*"/g;
    public static var singleQuotedString:RegExp     = /'([^\\'\n]|\\.)*'/g;
    public static var multiLineDoubleQuotedString:XRegExp   = new XRegExp('"([^\\\\"]|\\\\.)*"', 'gs');
    public static var multiLineSingleQuotedString:XRegExp   = new XRegExp("'([^\\\\']|\\\\.)*'", 'gs');
    public static var xmlComments:RegExp                = /(&lt;|<)!--[\s\S]*?--(&gt;|>)/gm;
    public static var url:RegExp                        = /\w+:\/\/[\w-.\/?%&=:@;]*/g;

2 个答案:

答案 0 :(得分:1)

我明白该怎么做。

  1. 删除作为AS3正则表达式语法一部分的第一个和最后一个/

  2. 将结束选项(例如ggm)放在第二个参数中。

  3. 最后通过用2个反斜杠替换每个反斜杠(\

  4. 总结如下:

    • 内联语法:/\/\*[\s\S]*?\*\//gm
    • RegExp语法:new RegExp ("\\/\\*[\\s\\S]*?\\*\\/", 'gm')

答案 1 :(得分:0)

你可以用另一种方式做到这一点:

private static const pattern:RegExp = /\/\*[\s\S]*?\*\//;
public static var regex:XRegExp = new XRegExp(pattern.source, "gm");