我想剪裁字符串,例如。
铅笔(4,99美元)
只是括号数值:
4,99
我现在有点关于sed中的正则表达式,所以我会这样做:sed "s#.*(##" | sed "s# USD.*##"
。但是我应该如何在javascript replace
函数中使用任何正则表达式?
答案 0 :(得分:6)
此处无需更换。使用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]
和(第一个)捕获组的完整匹配。
答案 1 :(得分:1)
我建议你这样做:
str.replace(/[^\d\.\,]/, "")
这意味着摆脱不是数字,逗号或点的所有内容。
答案 2 :(得分:0)
其中一种可能性是:
var match = "Pencil (4,99 USD)".match(/[^(]+(?= USD)/);