将123abcf3r2e转换为123ABC-F3R2E

时间:2019-05-13 08:53:40

标签: regex

如何使用正则表达式将每5位数字后的字母数字组合转换为带有短划线的大写字母:

123abe5r4t123AB-E5R4T

1 个答案:

答案 0 :(得分:1)

使用[0-9a-z]{1,5}作为 match 部分(带有g选项)和\U\0-作为 replace 部分。

\U(在 replace 部分中)负责转换为大写字母。

\0复制整个匹配项,-添加负号。

此后唯一要做的就是删除终止符(最后一场比赛之后)。

有关工作示例,请参见https://regex101.com/r/8WXUhd/1

编辑

我将以上示例重新制作为正则表达式的JavaScript风格:

var a = '123abe5r4txx234';
var b = a.replace( /[0-9a-z]{1,5}/g, u => u.toUpperCase() + '-').slice(0, -1);
print(a);
print(b);

它打印(源和结果):

123abe5r4txx234
123AB-E5R4T-XX234