Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/442.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 用零填充输入数字的函数_Javascript_Regex_Padding - Fatal编程技术网

Javascript 用零填充输入数字的函数

Javascript 用零填充输入数字的函数,javascript,regex,padding,Javascript,Regex,Padding,我这里有个严重的问题。我有一个函数,用零填充用户的输入。例如,如果我输入88,它将标准化为: 88我的职能是: export default length => (value) => { const noLeadingZeros = value.toString().replace(/(0+)/, ''); if (noLeadingZeros.length === 0) { return value; } return padLeft(noLeadingZe

我这里有个严重的问题。我有一个函数,用零填充用户的输入。例如,如果我输入88,它将标准化为: 88我的职能是:

export default length => (value) => {
  const noLeadingZeros = value.toString().replace(/(0+)/, '');
  if (noLeadingZeros.length === 0) {
    return value;
  }
  return padLeft(noLeadingZeros, length);
};
左键为:

export default (num, len) => (
  len > num.toString().length ? '0'.repeat(len - num.toString().length) + num
    : num
);
我的问题是,如果我输入这样的内容: 80112345将其转换为08112345。有什么想法吗?

这看起来不对:

const noLeadingZeros = value.toString().replace(/(0+)/, '');
您正在删除数字中的每一个零。。。甚至里面的人

您可以在代码中使用此正则表达式,而不是用于
/(0+)/

 /\b(0+)/
说明:
\b
确保零位于单词的开头

还是这个

 /^(0+)/
说明:
^
确保这是字符串的开头

这看起来是错误的:

const noLeadingZeros = value.toString().replace(/(0+)/, '');
您正在删除数字中的每一个零。。。甚至里面的人

您可以在代码中使用此正则表达式,而不是用于
/(0+)/

 /\b(0+)/
说明:
\b
确保零位于单词的开头

还是这个

 /^(0+)/

说明:
^
确保这是替换中字符串的开头,您正在替换数字中的所有零,而不仅仅是左侧的零,而且即使左侧有零,如果您要将它们添加回来,为什么要删除它们。您可以使用一个for循环,将字符串填充为零
n
次(其中
n
是字符串需要长度为8的位数),或者(由于@AndrewBone的注释),您可以使用
.repeat()
函数为您执行以下操作:

函数padLeft(值,len){
返回“0”。重复(字符串(值)。长度console.log(padLeft(“00000000”,8))在您的替换中,您要替换数字中的所有零,而不仅仅是左侧的零,即使左侧有零,如果您要将它们重新添加,为什么要删除它们。您可以使用一个for循环,将字符串填充为零
n
次(其中
n
是字符串需要长度为8的位数),或者(由于@AndrewBone的注释),您可以使用
.repeat()
函数为您执行以下操作:

函数padLeft(值,len){
返回“0”。重复(字符串(值)。长度console.log(padLeft(“00000000”,8))只需使用正则表达式断言该数字是有效数字

/0+/
然后获取数字中的位数:

('' + num).length;
然后把整件事放在一起

var paddedNum ='';
for (var i=0;i<8-len;i++) {
  paddedNum += "0";
}
paddedNum += num;
var paddedNum='';

对于(var i=0;i,只需使用正则表达式断言该数字是有效数字

/0+/
然后获取数字中的位数:

('' + num).length;
然后把整件事放在一起

var paddedNum ='';
for (var i=0;i<8-len;i++) {
  paddedNum += "0";
}
paddedNum += num;
var paddedNum='';

对于(变量i=0;i使用
slice

let str='00000000'+88;
让resp=str.slice(-8,str.length)

console.log(resp)//00000088
使用
切片

let str='00000000'+88;
让resp=str.slice(-8,str.length)

console.log(resp)//00000088
错误的替换…这是为了什么?如果只是要将前导零添加回中,为什么需要删除前导零?可能与锚定正则表达式重复:
/^(0+)/
现在,您正在从字符串中删除所有的
0
字符。在哪种情况下,number.tostring会给您前导零?错误的替换…这是为什么?如果您只是要将前导零添加回中,为什么要删除它们?可能是锚定正则表达式的重复:
/^(0+)/
现在,您正在从字符串中删除所有的
0
字符。在哪种情况下,数字.tostring会给您前导零?我认为他们的
。repeat()
已经很不错了,像这样的东西会很不错,我认为他们的
。repeat()
已经很不错了,类似的东西也会很不错