将 ColdFusion 会话转换为数组(日期)正则表达式问题

Convert ColdFusion Session to an Array (Date) regEx issue

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

我正在尝试获取这个日期并创建一个如下所示的数组:
阵列
[1] 02
[2] 05
[3] 2015

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

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

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

这个正则表达式显然不工作d,d,d所以任何帮助将不胜感激!

正则表达式应为 (\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})

Debuggex Demo

获取捕获的组

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

您不需要正则表达式。这会给你你想要的。

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

但是,如果 session.checkout.vehicle.purchasedate 是一个日期对象,您将使用日期函数 year()、month() 和 day()。