Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.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_Replace - Fatal编程技术网

Javascript 如何从字符串中间的数字中删除最后的数字?

Javascript 如何从字符串中间的数字中删除最后的数字?,javascript,regex,replace,Javascript,Regex,Replace,我有这样一个字符串: var string = "value1=12345&value2=3210&value3=..." 我想删除value1和value2的最后两位数字,因此生成的字符串是: string = "value1=123&value2=32&value3=..." 我可以拆分&上的字符串,循环项目并删除最后两个字符(如果项目以value1或value2开头),然后用&连接项目。但如何做到尽可能短 谢谢 根据给定的字符串,您可以在此处使用正向前瞻

我有这样一个字符串:

var string = "value1=12345&value2=3210&value3=..."
我想删除value1和value2的最后两位数字,因此生成的字符串是:

string = "value1=123&value2=32&value3=..."
我可以拆分
&
上的字符串,循环项目并删除最后两个字符(如果项目以value1或value2开头),然后用
&
连接项目。但如何做到尽可能短


谢谢

根据给定的字符串,您可以在此处使用正向前瞻删除最后两位数字

var r = "value1=12345&value2=3210&value3=...".replace(/\d{2}(?=&)/g, '');
console.log(r); //=> "value1=123&value2=32&value3=..."
如果
&
不总是跟在字符串后面,并且您严格希望更改
值1
值2

var r = "value1=12345&value2=3210&value3=...".replace(/(value[12]=\d*)\d{2}/g, '$1');
console.log(r); //=> "value1=123&value2=32&value3=..."

正则表达式匹配
value1=
value2=
,后跟一个数字序列。捕获组获取所有信息,直到最后2位。然后我们将匹配项替换为捕获组,以便删除最后2位数字。

什么类型的数字?基数2、16或10?我在这里看到的字符串不是真正的数字。您是否总是希望在
值2
值3
之前有一个
&
?拆分、修改和联接似乎是最干净的方法。“短”真的那么有价值吗?那没有意义。另外,在Firefox
s.split('&').map(x=>let([k,v]=x.split('='))~keys.indexOf(k)?x.slice(0,-2):x)。join('&')
。我发现其他开发人员在阅读我的代码时往往很难破译棘手的一行程序。通常,在逻辑中更为明确,除非性能超过易读性。此解决方案可以修改除
value1
value2
之外的其他值。我不在乎更改哪些值,但感谢您花时间将Barmar的答案逐字复制到您自己的答案中。实际上,我没有复制任何答案,这只是你写表达你真正想做的事情的方式。谢谢,我不知道积极展望。
string = string.replace(/(value[12]=\d*)\d{2}/g, '$1');