匹配前面有特定字符串的字符

时间:2014-12-11 13:16:18

标签: javascript regex

我尝试在前面有精确字符串而不是前面的字符串时查找字符。怎么做?

我有字符串

+1545464454<+440545545454<+210544455454<+75455454545

上面的字符串是带有国际前缀的电话号码,但是其中一些在前缀和号码之间有0,我需要将其取出。

我有/(\+4|\+44|\+7 ... allprefixes here...)0/g但这也选择了前缀,我只需要选择0

我在javascript中

2 个答案:

答案 0 :(得分:3)

你几乎接近这一点。只需使用捕获组并替换如下所示的功能。大多数语言都支持捕获组。

/(\+(?:4|44|7 ... allprefixes here without `+`...))0/g

更换字符串:

$1

\1

如果您使用的是PHP,\K应该有效。 \K会丢弃之前匹配的字符,以便在决赛中打印。

'~\+(?:4|44|7)\K0~g'

在javascript中。

> var str = "+1545464454<+440545545454<+210544455454<+75455454545"
> str.replace(/(\+(?:44|21|7|4))0/g, "$1")
'+1545464454<+44545545454<+21544455454<+75455454545'

答案 1 :(得分:2)

如果您的语言支持lookbehinds,您可以使用以下正则表达式

中使用的语言
/(?<=\+(4|44|7))0/g

Javascript不支持它。所以你需要使用这样的东西

str.replace(/(\+(4|44|7))0/, "$1");