我想修剪字符串,例如。
铅笔(4,99 美元)
只是一个括号数值:
4,99
我现在有点关于 sed 中的正则表达式,所以我会这样做sed "s#.*(##" | sed "s# USD.*##"
:replace
但是我应该如何在javascript函数中使用任何正则表达式?
我想修剪字符串,例如。
铅笔(4,99 美元)
只是一个括号数值:
4,99
我现在有点关于 sed 中的正则表达式,所以我会这样做sed "s#.*(##" | sed "s# USD.*##"
:replace
但是我应该如何在javascript函数中使用任何正则表达式?
此处无需更换。使用该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]
。
我建议你这样做:
str.replace(/[^\d\.\,]/, "")
这意味着摆脱所有不是数字、逗号或点的东西。
几种可能性之一是:
var match = "Pencil (4,99 USD)".match(/[^(]+(?= USD)/);