gpt4 book ai didi

JavaScript 使用带有 .match 正则表达式的变量

转载 作者:行者123 更新时间:2023-11-28 15:28:11 26 4
gpt4 key购买 nike

我对正则表达式还很陌生,但我正在尝试在匹配中使用变量。

所以我有一个字符串“Total: $168”我正在尝试获取数字金额,168。

所以我有这个:

totalCost = totalCost.match(/[^Total: $]*$/);

当我回显这一点时,我得到了 168。这是可行的,这就是我想要的。

但现在我想更进一步,希望将“Total: $”设置为一个变量,这样我就可以轻松设置它并使其模块化。

所以我就这么做了

 var stringToSearch = 'Total: $';

然后就这么做了

 totalCost = totalCost.match(/[^stringToSearch]*$/);

我做了一个控制台日志:

 console.log(totalCost+" || "+stringToSearch );

我得到:

l: $168 || Total: $

为什么当我创建这个变量时它的行为很奇怪?

最佳答案

您的正则表达式能够返回 "120" 纯属运气。 !

[^Total: $]*$告诉正则表达式解析器匹配除方括号 [ 之间的字符以外的任何内容。 ..] ('T'、'o'、't'、'a'、'l'、' ' 或 '$'),尽可能多次,直到行尾( $ 不是文字 '在本例中为 $' 字符)。那么它匹配了什么?唯一不属于字符类的字符:“1”、“2”、“0”。

您想要做的是捕获文字字符串“Total:$”后的匹配数字:

var totalCost = 'Total: $168',
matches = totalCost.match(/^Total: \$([\d\.]*)/),
totalCostNum = matches ? parseFloat(matches[1]) : 0;

要创建该变量,您需要首先转义变量,以便文本可以按字面匹配,然后使用 new RegExp构建你的正则表达式:

var totalCost = 'Total: $168',
stringToMatch = 'Total: $',
stringToMatchEscaped = stringToMatch.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&'),
stringToMatchRegEx = new RegExp(stringToMatchEscaped + /([\d\.]*)/.source),
matches = totalCost.match(stringToMatchRegEx),
totalCostNum = matches ? parseFloat(matches[1]) : 0;

关于JavaScript 使用带有 .match 正则表达式的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28376287/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com