如何使用javascript替换函数替换字符串第一个后面的所有句点?
您好,我正在尝试通过(替换)在开头省略字母和分号的输入,这已经过验证,但除此之外,我需要您不要让我在输入第二个句点后再输入第二个句点,我希望您能帮助我: 我的代码: (我正在使用onInput方法捕获输入) 例:如何使用javascript替换函数替换字符串第一个后面的所有句点?,javascript,reactjs,regex,replace,Javascript,Reactjs,Regex,Replace,您好,我正在尝试通过(替换)在开头省略字母和分号的输入,这已经过验证,但除此之外,我需要您不要让我在输入第二个句点后再输入第二个句点,我希望您能帮助我: 我的代码: (我正在使用onInput方法捕获输入) 例: 您可以尝试以下正则表达式: /[^\d,]|(?您可以尝试以下正则表达式: /[^\d,]|(?您可以匹配您想要删除的内容,并使用捕获组来保存您想要保留的内容 在更换使用组1中 ^\D*(\d+[.,]?\d*)?.* ^字符串的开头 \D*匹配除应删除的数字之外的任何字符 (Ca
您可以尝试以下正则表达式:
/[^\d,]|(?您可以尝试以下正则表达式:
/[^\d,]|(?您可以匹配您想要删除的内容,并使用捕获组来保存您想要保留的内容
在更换使用组1中
^\D*(\d+[.,]?\d*)?.*
^
字符串的开头
\D*
匹配除应删除的数字之外的任何字符
(
Capturegroup 1
\d+[,]?\d*
匹配1+个数字,可选,
或
和可选数字
)?
关闭该组并将其设置为可选
*
匹配它后面应该删除的任何字符
这样,输入也不能只包含点或逗号
const regex=/^\D*(\D+[,]?\D*)?*/;
常量输入=document.getElementById(“myInput”);
const updateValue=ev=>ev.target.value=ev.target.value.replace(regex,“$1”)
input.addEventListener('input',updateValue);
您可以匹配您要删除的内容,并使用捕获组来保存您要保留的内容
在更换使用组1中
^\D*(\d+[.,]?\d*)?.*
^
字符串的开头
\D*
匹配除应删除的数字之外的任何字符
(
Capturegroup 1
\d+[,]?\d*
匹配1+个数字,可选,
或
和可选数字
)?
关闭该组并将其设置为可选
*
匹配它后面应该删除的任何字符
这样,输入也不能只包含点或逗号
const regex=/^\D*(\D+[,]?\D*)?*/;
常量输入=document.getElementById(“myInput”);
const updateValue=ev=>ev.target.value=ev.target.value.replace(regex,“$1”)
input.addEventListener('input',updateValue);
您可以将一个函数作为第二个参数传递给。我创建了一个count
变量,该变量对于找到的每个匹配项都会递增。第一个匹配项是0
,它是一个快速值,之后将是truthy
const input=document.querySelector('input');
input.addEventListener(“更改”,()=>{
让计数=0;
input.value=input.value.replace(/[.]/g,(匹配)=>count++?'':匹配);
});
kbd{背景色:#eee;边框半径:3px;边框:1px实心#b4b4;框阴影:0 1px 1px rgba(0,0,0,2),0 2px 0 rgba(255,255,255,7)插入;颜色:#333;显示:内联块;字体大小:0.85em;字体重量:700;线条高度:1;填充:2px 4px;空白:nowrap}
(按Enter键触发事件)
您可以将函数作为第二个参数传递给。我创建了一个count
变量,该变量对于找到的每个匹配项都会递增。第一个匹配项是0
,这是一个快速值,之后它将是真实值
const input=document.querySelector('input');
input.addEventListener(“更改”,()=>{
让计数=0;
input.value=input.value.replace(/[.]/g,(匹配)=>count++?'':匹配);
});
kbd{背景色:#eee;边框半径:3px;边框:1px实心#b4b4;框阴影:0 1px 1px rgba(0,0,0,2),0 2px 0 rgba(255,255,255,7)插入;颜色:#333;显示:内联块;字体大小:0.85em;字体重量:700;线条高度:1;填充:2px 4px;空白:nowrap}
(按Enter键触发事件)
您是否试图阻止用户输入第二个句点?因此,我可以执行1.111111111,但我可以执行1.111.111。因此,如果我要添加第二个句点,您是否希望返回错误或只是中断输入?或者您是否接收整个字符串并删除第一个句点之后的所有句点?而不是阻止用户输入某些字符rs通常最好是让他们去做,然后提醒他们,一旦输入失去焦点,或者用户试图提交数据,输入无效。当直接使用输入时,用户可能会认为他们的键盘坏了或者有什么奇怪的事情发生。你是想阻止用户进入第二个句点吗?所以我可以做1.111111111但我可以做1.111.111。所以,如果我要添加第二个句点,你是想返回错误还是只想切断输入?还是要输入整个字符串并删除第一个句点之后的所有句点?与其阻止用户输入某些字符,不如让他们输入,然后在输入后提醒他们输入无效put失去焦点,或者用户试图提交数据。当用户直接使用输入时,可能会认为键盘坏了,或者发生了什么奇怪的事情。
^\D*(\d+[.,]?\d*)?.*