簡體   English   中英

如何使用javascript替換為可變模式

[英]how to use javascript replace with variable pattern

我有一個算術表達式,可以在美國數字字中包含一個數字(例如1000100可以寫成一百萬一千。我需要在表達式中識別出這種模式,並將其轉換為相應的數字等效形式。

我正在使用下面的代碼。

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

word2number是一個函數,它將直到(10 ^ 68)之前的任何數字的單詞表示形式轉換為其相應的數字等效形式,而patternToExtractOperand是使用支持的模式准備的列表。

編寫以上代碼的正確方法應該是什么? 或如何使用javascript替換為可變模式?

您可能需要閱讀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");

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM