2

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

+44 (0) 234-567-8901

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

我想使用这个字符串并删除所有字符,包括直到第二个空格的空格并删除破折号。例如:

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

任何人都可以帮忙吗?

谢谢

4

2 回答 2

2

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

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

于 2012-07-18T15:25:30.187 回答
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)
于 2012-07-18T15:11:02.087 回答