Regex Actionscript正则表达式有问题

Regex Actionscript正则表达式有问题,regex,actionscript-3,Regex,Actionscript 3,我必须从HTML数据中解析出颜色信息。颜色可以是RGB颜色,也可以是样例图像的文件名 我曾经开发和测试这些模式。我将作为正则表达式的代码逐字从工具复制到Flex Builder中。但是,当我对字符串执行模式时,我得到一个空值 以下是字符串的模式和示例(我取出了正确的HTML标记,以便字符串正确显示): 部门数据: <div style="background-color:rgb(2,2,2);width:10px;height:10px;"> IMG数据: <img src=

我必须从HTML数据中解析出颜色信息。颜色可以是RGB颜色,也可以是样例图像的文件名

我曾经开发和测试这些模式。我将作为正则表达式的代码逐字从工具复制到Flex Builder中。但是,当我对字符串执行模式时,我得到一个空值

以下是字符串的模式和示例(我取出了正确的HTML标记,以便字符串正确显示):

部门数据:

<div style="background-color:rgb(2,2,2);width:10px;height:10px;">
IMG数据:

<img src="/media/swatches/jerzeesbirch.gif" width="10" height="10" alt="Birch">
以下是我的Actionscript代码:

var divPattern : RegExp = new RegExp("/([0-9]{1,3},[0-9]{1,3},[0-9]{1,3})/");
var imgPattern : RegExp = new RegExp("/[a-z0-9_-]+/[a-z0-9_-]+/[a-z0-9_-]+\.[a-z0-9_-]+/");

var divResult : Array = divPattern.exec(object.swatch);
var imgResult : Array = imgPattern.exec(object.swatch);  
两个数组都为空

这是我第一次尝试AS编码,所以我认为我声明了一些错误

Steve

(我不知道ActionScript,但我知道Javascript,它们应该足够接近解决您的问题。)


要为模式
^[a-z]+$
构建RegExp对象,可以使用

var pattern : RegExp = new RegExp("^[a-z]+$");
或者更好

var pattern : RegExp = /^[a-z]+$/
代码
newregexp(“/^[a-z]+$/”
是错误的,因为这需要在
^
前面和
$
后面加一个斜杠


因此,您的DIV模式应该写为

var divPattern : RegExp = /([0-9]{1,3},[0-9]{1,3},[0-9]{1,3})/;
但是,正如您所知,
是用于捕获的特殊字符,您需要对它们进行转义:

var divPattern : RegExp = /\([0-9]{1,3},[0-9]{1,3},[0-9]{1,3}\)/;

对于IMG模式,由于
/
对正则表达式进行了定界,因此还需要对其进行转义:

var imgPattern : RegExp = /[a-z0-9_-]+\/[a-z0-9_-]+\/[a-z0-9_-]+\.[a-z0-9_-]+/


最后,您可以使用
\d
代替
[0-9]
\w
代替
[a-zA-Z0-9\/code>

我不知道您的正则表达式模式是否正确,但从上的文档来看,您的
新RegExp()
调用需要第二个参数来声明区分大小写的标志等

编辑:另外,正如前面所指出的,在使用
new
方法时,您不需要/delimiter

因此,您可以使用:

var divPattern:RegExp = new RegExp("([0-9]{1,3},[0-9]{1,3},[0-9]{1,3})", "");
或者,您也可以将替换语法与/:

var divPattern:RegExp = /([0-9]{1,3},[0-9]{1,3},[0-9]{1,3})/;

。。。在这种情况下,标志字符串(如果有的话)包含在最后的/

之后,我假设您已经检查了该跟踪(object.swatch);返回一个有效字符串?+1 for…否,当使用new
new RegExp(…)
时,不需要任何分隔符(请参阅您发布的链接)。您可以省略()分隔符,但如果确实使用它们,我认为您需要提供第二个参数(即使它是Adobe示例中所示的空字符串)。spdaly的代码使用分隔符。不,我说的是
/
分隔符。通过执行
var模式:RegExp=/\w/
变量模式:RegExp=newregexp(“\w”)
newregexp(…
语法需要一个纯字符串(不带分隔符!)。请参阅:Aahh-现在明白你的意思了,谢谢你指出这一点。我将更新我的答案。
var divPattern:RegExp = new RegExp("([0-9]{1,3},[0-9]{1,3},[0-9]{1,3})", "");
var divPattern:RegExp = /([0-9]{1,3},[0-9]{1,3},[0-9]{1,3})/;