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
之前有一个&
?拆分、修改和联接似乎是最干净的方法。“短”真的那么有价值吗?那没有意义。另外,在Firefoxs.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');