我希望有人可以在使用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字符串的正则表达式中包含“/”不会改变任何内容。
答案 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, "");