Flex String替换正则表达式问题

时间:2009-08-13 16:38:04

标签: regex flex replace

我希望有人可以在使用Flex完成的以下Regex替换示例中看到问题:

remainder=inputString.replace(
     "\\("+bracketContents+"\\)(\\s)*(and|or)*(\\s|$)+",
     "");

对于以下示例:

输入:“a和(e或f)”

上面给出的正常正则表达式将是:

  

\(e or f\)(\s)*(and|or)*((\s)+|$)+

应该留下一个“a和”的余数字符串,正如我使用http://gskinner.com/RegExr/(基于Flex)确认的那样。这都是非常标准的东西,所以我希望它不是Regex引擎支持问题。提前谢谢。

编辑:在上面的基于Flex字符串的正则表达式中包含“/”不会改变任何内容。

2 个答案:

答案 0 :(得分:1)

如果我尝试以下

var replacePattern:RegExp=new RegExp(
                   "\\("+bracketContents+"\\)(\\s)*(and|or)*(\\s|$)+",
                   "ig");

remainder=inputString.replace(replacePattern,"");

我得到正确的输出。如果有人知道为什么会这样,那就很有趣了。

答案 1 :(得分:1)

这看起来像语法问题。在您的第一篇文章中,您尝试使用RegExp文字语法,但不应引用此语法,也不允许使用变量。

Flex认为你试图使用文字字符串作为替换模式。由于“bracketContents”变量是必需的,因此必须使用RegExp构造函数。

如果不需要该变量,则RegExp文字的正确语法应为:

remainder=inputString.replace(/\(e or f\)(\s)*(and|or)*((\s)+|$)+/ig, "");