string.replace正規表現を使用してJavaScriptの電卓を作成しようとしていますが、問題が残っています。
たとえば、入力が10k
の場合、kを000
に置き換えようとしています。
この正規表現では、文字列kmbt
のk
のインデックスをすべての出現箇所に置き換えようとしています。
var answer = "10k".replace(/(\d+(?:[.,]+\d+)?)([kmbt])/gi, "kmbt".indexOf("$2"));
私はこれをにconsole.logすると、それは私が欲しいものではありませんこれは、-1を返します。
したがって、正規表現を少し変更する:var answer = "10k".replace(/(\d+(?:[.,]+\d+)?)([kmbt])/gi, "$2");
正しくk
を返します。
返すのは0
で、これは文字列 "kmbt"の文字kの位置です。このポジションでは計算を続けたいが、現在はこの問題とは関係がない。
明らかに、正規表現の 'replace'部分で関数を使用することはできません。
誰もがこの問題の解決法を知っていますか、または「置換」部分でどのように関数を使用することができますか?あなたは結果に変更を加えることができます「を置換」の部分に引数として関数を追加する必要があるので、あなたは、正規表現で直接変更を加えることはできません
ANSWER
!
var answer = rsn.replace(/(\d+(?:[.,]+\d+)?)([kmbt])/gi, function(match, p1, p2) { // do something with p1 and p2 and return something return p1 + p2 // for example });
あなたの答えをありがとう、これは私の問題の解決策を見つけるのを助けました! – Denny