Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/445.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript正则表达式:匹配货币输入字符串开头或结尾以外的所有负数_Javascript_Regex - Fatal编程技术网

JavaScript正则表达式:匹配货币输入字符串开头或结尾以外的所有负数

JavaScript正则表达式:匹配货币输入字符串开头或结尾以外的所有负数,javascript,regex,Javascript,Regex,对于货币输入,我想替换所有不在字符串开头的减号输入,或者当它是最后一个字符时,前面没有逗号 在输入事件中,我已经为一些其他无效输入调用了一个替换为简单正则表达式: input.replace(/[^0-9\.\,\-]/g, '') .replace('.', ','); 如果我能扩展这个正则表达式来去除无效的缺点,那就太好了 所需行为的一些示例: 50-50->5050 50,00-->50,00 -5-0,--50,- 编辑:结束或开始处的双减

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

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

        input.replace(/[^0-9\.\,\-]/g, '')
             .replace('.', ',');
如果我能扩展这个正则表达式来去除无效的缺点,那就太好了

所需行为的一些示例:

  • 50-50
    ->
    5050
  • 50,00-
    ->
    50,00
  • -5-0,-
    -50,-
编辑:结束或开始处的双减号也应去除

  • -50,00
    ->
    -50,00
  • 50,-
    ->
    50,-
我想我可以从一个积极的前瞻
-(?=)
开始,但它仍然匹配第一个字符

此外,我发现它的作用与此相反(开始和结束时不允许使用负号),但这仍然会匹配整个字符串。而不是分离状态


任何帮助都将不胜感激。

功能正常吗?这应该可以做到:

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

函数可以吗?这应该可以做到:

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

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

var replacehypen=函数(str){
返回str.replace(/(\d)-|(-)/g,$1$2');
};
console.log(replacehypen('50-50'));
控制台日志(替换连字符('50,00-');
console.log(replacehypen('-5-0,-'));
console.log(replacehypen('-50,00'));

console.log(replacehypen('50,-')对特定的正则表达式模式使用以下方法:

var replacehypen=函数(str){
返回str.replace(/(\d)-|(-)/g,$1$2');
};
console.log(replacehypen('50-50'));
控制台日志(替换连字符('50,00-');
console.log(replacehypen('-5-0,-'));
console.log(replacehypen('-50,00'));

console.log(replacehypen('50,-')您可以使用word boundary
\b
来完成此操作

\b

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

var regex=/\b-+\b/g;
console.log(“50-50.replace(regex)”)
console.log(“50,00”。替换(regex,))
console.log(“-5-0,-.replace(regex)”)
console.log(“-5----6-”。替换(regex,”)

console.log(“-6--66-6,-.replace(regex)”)
您可以使用word boundary
\b
来执行此操作

\b

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

var regex=/\b-+\b/g;
console.log(“50-50.replace(regex)”)
console.log(“50,00”。替换(regex,))
console.log(“-5-0,-.replace(regex)”)
console.log(“-5----6-”。替换(regex,”)

log(“-6--66-6,-.replace(regex)”)
这看起来很有希望,但它仍然允许在开始和结束时使用双减号。也许我不清楚。更新了问题。事实上,是的,你的问题不够清楚,连字符都没有。现在,检查我的更新,它适用于双连字符也很好。谢谢。这看起来很有希望,但它仍然允许在开始和结束时使用双负。也许我不清楚。更新了问题。事实上,是的,你的问题不够清楚,连字符都没有。现在,检查我的更新,它适用于双连字符也很好。谢谢。信息丰富,但是这仍然允许在结尾处使用减号,而不是在开始或结束处使用逗号和双连字符。也许我可以以此作为开始。谢谢。信息丰富,但是这仍然允许在结尾处使用减号,而不是在开始或结束处使用逗号和双连字符。也许我可以以此作为开始。谢谢