Regex Actionscript正则表达式有问题
我必须从HTML数据中解析出颜色信息。颜色可以是RGB颜色,也可以是样例图像的文件名 我曾经开发和测试这些模式。我将作为正则表达式的代码逐字从工具复制到Flex Builder中。但是,当我对字符串执行模式时,我得到一个空值 以下是字符串的模式和示例(我取出了正确的HTML标记,以便字符串正确显示): 部门数据: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=
<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…否,当使用newnew 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})/;