JavaScript RegEx:匹配货币输入

时间:2016-12-17 11:34:07

标签: javascript regex

对于货币输入,我想要替换不在字符串开头的所有减号输入,或者当它是最后一个字符时,不会以逗号开头。

在输入事件中,我已经使用简单的正则表达式替换其他一些无效输入:

        input.replace(/[^0-9\.\,\-]/g, '')
             .replace('.', ',');

如果我可以扩展这个正则表达式以消除无效的弊端,那将是很好的。

所需行为的一些例子:

  • 50-50 - > 5050
  • 50,00- - > 50,00
  • -5-0,- - > -50,-

编辑:结尾或开始时的双减去也应该被剥离。

  • --50,00 - > -50,00
  • 50,-- - > 50,-

我想我可以从积极的前瞻-(?=.)开始,但仍然与第一个角色匹配。

此外,我发现this post几乎相反(开头和结尾都不允许使用),但仍然会匹配整个字符串。不是sepatate的缺点。

任何帮助都将不胜感激。

3 个答案:

答案 0 :(得分:0)

功能正常吗?这应该可以解决问题:

function removeMinus(str) {
  var prefix = str.startsWith("-") ? "-" : "";
  var postfix = str.endsWith(",-") ? "-" : "";
  return prefix + str.split("-").join("") + postfix
}

答案 1 :(得分:0)

使用以下方法使用特定的正则表达式模式:



            da#event#add[`ALL_EVENTS];




答案 2 :(得分:0)

你可以使用单词边界\b来做到这一点。

RegExp Boundaries

  

\b

     

匹配单词边界。这是一个单词字符未被跟随或前面跟另一个单词字符的位置,例如在字母和空格之间......

https://regex101.com/r/YzCiEx/1



var regex = /\b-+\b/g;

console.log("50-50".replace(regex, ''))
console.log("50,00".replace(regex, ''))
console.log("-5-0,-".replace(regex, ''))
console.log("-5------6-".replace(regex, ''))
console.log("-6--66-6,-".replace(regex, ''))