确保字符串仅包含数字,句点,并且可能包含前导破折号

时间:2018-12-12 06:42:23

标签: javascript jquery regex django

我仍在学习正则表达式,我需要删除字符串中的所有字符,除了数字(0-9),仅首先遇到点(。)和否(-)(如果出现在字符串的第一个索引上)

所以基本上,如果我有一个字符串“ -12,3asd45,we-678.90.45”,它应该给我“ -12345678.9045”

这是我当前的代码,但是问题是我只想排除(-)如果它出现在字符串的第一个索引上,当前它排除所有出现的(-):

value = val.replace(/[^-0-9.]/g , '');

1 个答案:

答案 0 :(得分:2)

(?!^)-替代字符集(对字符串的开头进行负向超前搜索,后跟-):

const val = "-12,3asd45,we-678.90"
console.log(val.replace(/[^0-9.-]|(?!^)-/g, ''));

要另外删除除小数点以外的所有小数,请匹配组中第一个.之后的所有内容,并使用回调函数将该组中的所有句点替换为空字符串:

const val = "-12,3asd45,we-678.90.0.0.0"
const value = val
  .replace(/[^0-9.-]|(?!^)-/g, '')
  .replace(/^([^.]*\.)(.*)/, (_, g1, g2) => g1 + g2.replace(/\./g, ''));
console.log(value);