【问题标题】:Regex javascript remove negative percentage "-"正则表达式 javascript 删除负百分比“-”
【发布时间】:2023-03-20 18:01:01
【问题描述】:

我需要使用 Regex 或 jQuery 查找并删除百分比前面的“-”负号。

我试过这样做:

$('[data-excel]').each(function() { 
   $(this).html($(this).html().replace(' -', ' ')); 
});

但这似乎并没有消除它。我在负号 ** -** 之前有一个空格的原因是每个单词中都有一个单词,其措辞类似于 this-and 所以它会选择那个而不是那个页面上的百分比。

我正在查看的示例:

大约 -38% 是用这个和其他东西制成的。

任何帮助都会很棒!谢谢。

【问题讨论】:

  • 使用注册表? Windows 注册表工具??
  • Regedit 和正则表达式 (regex) 是两个截然不同的东西。
  • 糟糕...让我的编码语言混为一谈。已更正。感谢@ÁlvaroG.Vicario 指出这一点:)
  • (+/-)38% 怎么样?因为没有任何东西是由任何东西的负百分比组成的。

标签: jquery regex replace


【解决方案1】:
myString.replace(/-(?=\d)/,"")

使用lookahead 查找- 后跟一个数字。

http://regex101.com/r/rV3rF3/1

为了完整起见,为了确保数字后面实际上是 %,只需:

myString.replace(/-(?=d+%)/,"");

考虑(可选)小数:

myString.replace(/-(?=\d+\.?\d*%)/,"");

哪些匹配:

-      literal -
?=     followed by (lookahead):
d+     1 or more digits
\.?    0 or 1 decimal point
d*     0 or more digits

http://regex101.com/r/rV3rF3/2

【讨论】:

  • 这并不能确保该值是百分比。这会将“我得分 -5,所以现在我的平均水平比以前低 -20%”变成“我得 5 分,所以现在我的平均水平比以前低 20%”。
  • @JamesDonnelly:没错,但很容易解决(参见 vks 的解决方案)。 OP没有说明字符串中是否有其他数字。
  • @MattBurland 字符串中没有其他数字。只是百分比和文字。
  • @StealthRT 所以没有小数?喜欢-13.5%
  • @ᾠῗᵲᄐᶌ 不,一点也不。
【解决方案2】:
-(?=\d+%)

试试这个。这将在-之后查找百分号。替换为empty string。查看演示。

http://regex101.com/r/rQ6mK9/25

【讨论】:

  • 问题含糊不清,但百分比符号通常放在 数字之后。例如,负百分比是-5%,而不是-%5
【解决方案3】:

试试这个:myStr.replace(/[/-]/g, '')

【讨论】:

    猜你喜欢
    • 2011-11-15
    • 2013-06-22
    • 1970-01-01
    • 2012-12-08
    • 2019-02-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多