是否有正则表达式来替换除第一个以外的所有事件?
Is there a regex to replace all occurences except for the first one?
我已经尝试将其用于上述目的
var str = "48abc5,2d25.,ft87";
str = str.replace(/[^\d(,.)?]/g, '');
console.log(str);
我预计输出会是 485,225
因为通过问号的 0-1 条件。
但是我的输出是 485,225.,87
简单地说,我的最终方法是用逗号或点分隔数字。
以下模式符合我的意图:
{1-9}+{0-9)?{, | . }{1-9}*
很想听听您的解决方案。
在字符 类 内,所有字符都是文字,除了 ^
、\
、[
和 -
。因此,您不能在那里添加 ?
并期望它表现为量词。
你需要
var str = "48abc5,2d25.,ft87";
str = str.replace(/[^\d,.]+/g, '').replace(/^([^.,]*(?:[.,][^.,]*)?).*/, '').replace(/^0+/, "");
console.log(str);
.replace(/[^\d,.]+/g, '')
部分删除除数字、点和逗号之外的所有字符。
.replace(/^([^.,]*(?:[.,][^.,]*)?).*/, '')
部分保留第一串数字,并可选择在第一个 .
或 ,
.
之后保留第二串数字
.replace(/^0+/, "")
部分删除字符串开头的一个或多个 0
数字。
你的固定演示 fiddle:
function testRegex(event){
let evt = event || window.event
console.log(evt.target.value)
document.getElementById("result").innerHTML = "Result: "+
evt.target.value.replace(/[^\d,.]+/g, '')
.replace(/^([^.,]*(?:[.,][^.,]*)?).*/, '')
.replace(/^0+/, "");
}
<label>Value:</label>
<input onkeyup="testRegex()" type="text"/>
<p id="result">Result:</p>
我已经尝试将其用于上述目的
var str = "48abc5,2d25.,ft87";
str = str.replace(/[^\d(,.)?]/g, '');
console.log(str);
我预计输出会是 485,225 因为通过问号的 0-1 条件。
但是我的输出是 485,225.,87
简单地说,我的最终方法是用逗号或点分隔数字。 以下模式符合我的意图:
{1-9}+{0-9)?{, | . }{1-9}*
很想听听您的解决方案。
在字符 类 内,所有字符都是文字,除了 ^
、\
、[
和 -
。因此,您不能在那里添加 ?
并期望它表现为量词。
你需要
var str = "48abc5,2d25.,ft87";
str = str.replace(/[^\d,.]+/g, '').replace(/^([^.,]*(?:[.,][^.,]*)?).*/, '').replace(/^0+/, "");
console.log(str);
.replace(/[^\d,.]+/g, '')
部分删除除数字、点和逗号之外的所有字符。
.replace(/^([^.,]*(?:[.,][^.,]*)?).*/, '')
部分保留第一串数字,并可选择在第一个 .
或 ,
.
.replace(/^0+/, "")
部分删除字符串开头的一个或多个 0
数字。
你的固定演示 fiddle:
function testRegex(event){
let evt = event || window.event
console.log(evt.target.value)
document.getElementById("result").innerHTML = "Result: "+
evt.target.value.replace(/[^\d,.]+/g, '')
.replace(/^([^.,]*(?:[.,][^.,]*)?).*/, '')
.replace(/^0+/, "");
}
<label>Value:</label>
<input onkeyup="testRegex()" type="text"/>
<p id="result">Result:</p>