将ColdFusion会话转换为数组(日期)regEx问题

时间:2015-02-05 20:09:53

标签: arrays regex coldfusion

我正在尝试将会话转换为特定的(日期)字符串。
<cfset Purchasedate = "#session.checkout.vehicle.purchasedate#" />
此日期字段具有一个掩码,该掩码始终使日期具有此格式02/05/2015。

我正在尝试使用此日期并创建一个如下所示的数组:
ARRAY
[1] 02
[2] 05
[3] 2015年

是否有可能通过选择前两个数字到第一个数组然后将第二个数字选择到第二个数组而最后四个数字到第三个数组来帮助我创建这个的RegEx?

这样我就可以创建多个变量。

<cfset Purchasedate = "02/05/2015" />
<cfset PurchArray = ReMatch("\2d,\2d,\4d",Purchasedate) />
<cfdump var="#PurchArray#">

这个regEx明显不起作用\2d,\2d,\4d所以对此有任何帮助将不胜感激!

2 个答案:

答案 0 :(得分:7)

你不需要正则表达式。这将为您提供您想要的内容。

writedump(listtoarray("02/05/2015", "/"));

但是,如果session.checkout.vehicle.purchasedate是日期对象,则可以使用日期函数year(),month()和day()。

答案 1 :(得分:3)

正则表达式应为(\d{2})\/(\d{2})\/(\d{4})。转义反斜杠可能是可选的。

\d匹配一位数字。 {x}完全匹配前一个事物的 x 号码(在上面的例子中,是一个数字)。 ()括号是捕获组,允许您引用整个匹配的部分。

同样,你可以做\d\d\/\d\d\/\d\d\d\d[0-9]{2}\/[0-9]{2}\/[0-9]{4},他们都会做同样的事情。

(\d{2})\/(\d{2})\/(\d{4})

Regular expression visualization

Debuggex Demo

进入捕获的小组

这个正则表达式是合理的,但它不会像你想要的那样返回数组中捕获的组。这是因为ReMatch不这样做。请参阅this answer which explains why, and a few ways to work around it