3

文字列をトリミングしたいのですが、例えば。

鉛筆(4,99米ドル)

角かっこだけの数値に:

4,99

sedの正規表現について少し説明したので、次のようにしますsed "s#.*(##" | sed "s# USD.*##"replaceしかし、JavaScript関数で正規表現をどのように使用する必要がありますか?

4

3 に答える 3

7

ここで交換する必要はありません。このmatch関数の使用は、おそらくより簡単で適切です。

var priceStr;
var match = "Pencil (4,99 USD)".match(/[\d,]+/)
if(match)
    priceStr = match[0];

正規表現を少し洗練することができます。これは、数字やコンマで構成される最初のサブストリングを提供するだけです。ただし、文字列が常にこれほど短く、この形式である場合は、問題ないはずです。ただし、名前に数字またはコンマを含めることができる場合は、おそらく括弧で始めて、代わりにキャプチャグループを使用する必要があります。

var priceStr;
var match = "Pencil, black, thickness 2 (4,99 USD)".match(/\(([\d,]+)/)
if(match)
    priceStr = match[1];

後者の正規表現の簡単な説明。\(文字通りの開き括弧です。エスケープされていない括弧は、内部で一致するものを「キャプチャ」するため、文字通りの開き括弧なしで後で価格を取得できます。[\d,]は文字クラスであり、数字またはコンマのいずれかに一致し+、1回以上繰り返すだけです。そして、から完全一致を取得し、match[0]から(最初の)キャプチャグループを取得できますmatch[1]

于 2012-11-11T17:53:53.043 に答える
2

私はあなたがすることをお勧めします:

str.replace(/[^\d\.\,]/, "")

これは、数字、コンマ、またはドット以外のものをすべて取り除くことを意味します。

于 2012-11-11T18:09:45.967 に答える
0

いくつかの可能性の1つは次のとおりです。

var match = "Pencil (4,99 USD)".match(/[^(]+(?= USD)/);
于 2012-11-11T18:03:27.587 に答える