0
<cfset RegexToFindLength = "Length:.*?(\d*\.?\d+)\s*(""|")"/>

<cfset Description = "blah blah blah 2.5"""/>

<cfset size = #reMatch(RegexToFindLength, Description)# />

<cfdump var="#size#">

错误消息:ColdFusion 正在查看以下文本:)

希望从产品描述中提取长度:2.5"。

我已经在正则表达式中测试了上面的正则表达式并且它有效。但是当我尝试在 cfm 页面中使用它时,我得到了错误。

有人可以向我解释如何在 CF 中设置它吗?

4

1 回答 1

1

你这里有几个问题。

1)你没有逃避你的双引号,所以你最终会关闭你的正则表达式字符串并混淆它。

就个人而言,当我必须在字符串中使用双引号时,如果可以的话,我倾向于使用单引号来定义字符串。

<cfset RegexToFindLength = 'Length:.*?(\d*\.?\d+)\s*(""|")'/>

2)您的Description变量没有您要搜索的字符串,因此不会匹配。我将其更改为以下内容以使其工作(注意用于定义字符串的单引号):

<cfset Description = 'Length:.:2.5""'/>

3)(也许不是问题)Size没有被设置为数字。rematch返回一个字符串数组。您需要检查数组位置内字符串的长度或检查数组本身的长度 - 我不知道您到底想要做什么。

于 2012-08-20T17:53:51.703 回答