【发布时间】:2020-04-14 22:11:01
【问题描述】:
我正在尝试创建一个只接受数字和一个可选小数点的正则表达式:
const filterValue = (value) => value.replace(/^([0-9]*|\d*\.\d{1}?\d*)$/g, '').replace(/(\..*)\./g, '$1');
但是filterValue('test1234test') 还给我test1234test。
为什么?
【问题讨论】:
-
您的第一个模式与非数字、非小数不匹配,因此它们不会被空字符串替换
-
试试
value.replace(/^([^.]*\.)|\.+/g, '$1').replace(/[^\d.]+/g, '') -
我能做些什么来保持第二个模式 (
/(\..*)\./g, '$1') 不变? -
你想匹配
.123、123.(尽管它们通常写成0.123和123.0)。 -
@CarySwoveland 我想匹配你的前两个例子,而不是第二个(我不想允许字母字符)
标签: javascript regex