我有一个算术表达式,可以在美国数字字中包含一个数字(例如1000100可以写成一百万一千。我需要在表达式中识别出这种模式,并将其转换为相应的数字等效形式。

我正在使用下面的代码。

var patternToExtractOperand = '\+|-|\*|\/|%\sof|%|\(|\)';
expr = expr.replace(/patternToExtractOperand(.+?)patternToExtractOperand/g,word2number($1));

word2number是一个函数,它将直到(10 ^ 68)之前的任何数字的单词表示形式转换为其相应的数字等效形式,而patternToExtractOperand是使用支持的模式准备的列表。

编写以上代码的正确方法应该是什么? 或如何使用javascript替换为可变模式?

===============>>#1 票数:0 已采纳

您可能需要阅读https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/String/replace#Specifying_a_function_as_a_parameter

例:

var patternToExtractOperand = "\\s*([A-Za-z]+)(\\d*)";
var regExp = new RegExp(patternToExtractOperand, "g");
console.log("   Welcome123 Welcome321".replace(regExp, function() {
        console.log(arguments);
        return arguments[1];
    }));

输出量

{ '0': '   Welcome123',
  '1': 'Welcome',
  '2': '123',
  '3': 0,
  '4': '   Welcome123 Welcome321' }
{ '0': ' Welcome321',
  '1': 'Welcome',
  '2': '321',
  '3': 13,
  '4': '   Welcome123 Welcome321' }
WelcomeWelcome

说明

只要存在匹配项,就会使用整个匹配的字符串和匹配的组(匹配的字符串位于正则表达式中的括号内)和找到匹配项的第一个索引来调用指定为replace的第二个参数的函数执行搜索的实际字符串。

因此,根据您的情况,您可能需要更改要传递的函数以进行replace ,如下所示。

result = stringToBeSearched.replace(regExp, function(entireMatch, firstMatchedGroup, secondMatchedGroup) {
        return word2number(secondMatchedGroup);
    });

regExp将像这样构造

var patternToExtractOperand = "\\+|-|\\*|\\/|%\\sof|%|\\(|\\)";
var regExp = new RegExp(patternToExtractOperand + '(.+?)' + patternToExtractOperand, "g");

  ask by virus translate from so

未解决问题?本站智能推荐:

3回复

使用JavaScript中的循环将“-”替换为“ _”

我在c ++中应用了相同的方法将“-”替换为“ _”,它可以正常工作,但是在javascript中,它根本不能替换。
1回复

Javascript字符串替换为动态创建的模式

我的代码仅替换第一个匹配项,而忽略标志(全局和多行)。 我究竟做错了什么? 如您所见,我的占位符具有以下格式:{0},{1}等
1回复

Javascript将“ \\\\”替换为“ \\”

如何将字符串\\\\替换为\\ ? 例如,我想将RegExp('\\\\\\\\b')转换为RegExp('\\\\b') 。 我试过了:
3回复

替换为JavaScript

我有一个像这样的字符串: 并希望返回此部分: 如何使用纯JavaScript执行此操作? 谢谢!
4回复

Javascript将“,”替换为“,”

我正在尝试用逗号和空格替换所有逗号。 这是我尝试过的: 我先尝试了最上面的一个,但意识到它只替换了一个逗号实例,所以我尝试了最下面的一个(来自上一个SO问题),但无法使其起作用。 该字符串可能一开始可能不包含任何逗号。 有任何想法吗? 更新 这就是功能。 我为
2回复

如何使用不可变对象替换观察者模式

宣布Oo时,我感到很高兴,但事实证明,它不再属于木制品了 。 建议的替换库之一在其github页面上对此进行了解释,如下所示: Web开发朝着功能编程和不可变对象的方向发展,因此这是我们所有人都应该关注的地方。 尽管最近我听说过不可变的数据结构,但我仍然不知道如何使用它们来代
5回复

Javascript模式替换

我有一个这样的物体 现在,我需要一个函数,该函数将接收我的对象并借助其模式将其作为字符串返回。 预期结果: "Name: John<br>Surname: Doe<br>Location: LA" 我无法使用JavaScript的replace方法来做
2回复

使用\\ d模式在javascript中替换()函数

我正在尝试在JAVASCRIPT中编写简单的函数,它可以使用我的chrome web浏览器上安装的Tampermonkey自定义我的html代码。 我的输入html是一个地址: 该地址保存在名为“address”的变量中。 我用了一些代码来定制它: 现在我的html输出如下所
1回复

使用向后引用的javascript模式替换不起作用

在哪里工作正常 无法正常工作 ! 有什么想法吗??? NB 也很好
2回复

Javascript使用RegExp替换字符串模式?

我想删除任何出现在方括号内的数字的字符串模式,例如[1],[25],[46],[345](我认为方括号内最多3个字符应该可以)。 我想用一个空字符串“”替换它们,即删除它们。 我知道这可以用正则表达式来完成,但是我对此很陌生。 这是我所没有做的: } 有人可以帮我吗?