删除nginx配置变量上的前导零

时间:2018-12-11 16:36:39

标签: string nginx

我想知道是否可以删除nginx配置文件上变量的前导零。

我有一个定义如下的变量:

set $definitive_var $var1$var2$var3$var4;

还有一个获取$ var1,$ var2,$ var3和$ var4值的映射:

map $arg_a $var1 {
8JaYh7s733  0;
EMFnZiHXp4  1;
GWpn69jI0Z  2;
3eLtv4qOWj  3;
I7k80VJ1iH  4;
b2y36c342K  5;
qGi45WCfJA  6;
90y6i5H71b  7;
MQ02jOzoay  8;
curR6p449h  9;}

我的问题是:

如果变量$ definitive_var具有一个或多个前导零,我该如何删除它们?

例如,转换为:

0076

收件人:

76

2 个答案:

答案 0 :(得分:0)

使用此:

map $def_var $definitive_var {
  ~^0*(\d*)$ $1;
}

...

set $def_var $var1$var2$var3$var4;

...

# use $defnitive_var here, it will be automatically calculated from $def_var

更新

如果变量只能由零组成,则为防止将'00000'映射到'',请将正则表达式更改为~^0*(\d+)$

答案 1 :(得分:0)

我终于用一个if方法解决了它:

set $def_var $var1$var2$var3$var4;

if ( $def_var ~ "^0*(\d+)$" ) {
    set $definitive_var $1;
}

感谢您的帮助!