【发布时间】:2018-12-28 21:45:44
【问题描述】:
我有一个包含 mm-yyyy 日期的字符串; yyyy-mm; yyyy-mm-dd 等格式。目标是将日期子字符串的月份部分转换为罗马数字符号,例如
12-2018 ... 2018-12-28
转换成
XII-2018 ... 2018-XII-28
我使用这个函数将常规转换为罗马数字:
// https://stackoverflow.com/questions/9083037/convert-a-number-into-a-roman-numeral-in-javascript
function romanize(num) {
var lookup = {M:1000,CM:900,D:500,CD:400,C:100,XC:90,L:50,XL:40,X:10,IX:9,V:5,IV:4,I:1},roman = '',i;
for ( i in lookup ) {
while ( num >= lookup[i] ) {
roman += i;
num -= lookup[i];
}
}
return roman;
}
用于查找月份子字符串的正则表达式是
var re = /(19|20\d{2})\b-(\d{2})/g;
第一个带括号的匹配项 ($1) 仅是 19YY 或 20YY 年。第二个 ($2) 是月份子字符串。问题是我不能将 $2 作为参数传递,即
string = string.replace(re, "$1-" + romanize($2));
【问题讨论】:
标签: javascript regex-lookarounds