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

几种可能性之一是:

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