正则表达式 - 删除最多第二个空格

时间:2012-07-18 14:58:17

标签: javascript regex

我认为我想做的事情是可能的......但我还没有找到能够实现这一目标的答案。 我想在javascript中格式化一个与此类似的字符串:

+44 (0) 234-567-8901

正在进行的国际(+44)和本地((0))呼叫代码可能会发生变化,因此字符串可能更长或更短。但格式始终相同。

我想取这个字符串并删除包括空格到第二个空格的所有字符并删除破折号。 e.g:

+44 (0) 234-567-8901 becomes 2345678901

有人可以帮忙吗?

由于

2 个答案:

答案 0 :(得分:1)

如果您可以依赖字符串的结尾格式为一致的字符数,则可以获取最后12个字符,然后删除短划线。

var result = str.slice(-12).replace(/-/g, "");

如果你真的只想要一个正则表达式,你可以这样做......

var result = str.match(/(\d{3})-(\d{3})-(\d{4})$/).slice(1).join("");

同样,这依赖于字符串结尾的一致性。如果可能存在变化,则需要进行调整以进行补偿。


要获取最后一个空格后的所有内容,请将第一个示例中的slice()更改为此...

.slice(str.lastIndexOf(' ') + 1)

要获取第二个空格后的所有内容,请将slice()更改为此...

.slice(str.indexOf(' ', str.indexOf(' ') + 1) + 1)

答案 1 :(得分:1)

按照您自己的要求(删除所有内容,包括第二个空格,并删除剩余的破折号);

使用此模式^([\S]+\s){2}|-并替换为空。您应该留下与您要求的数字相似的数字(+44 (0) 234-567-8901变为2345678901)。