-1

如果可能的话,不是 100%,但我想将任何与我的 DID 范围不匹配的出站呼叫转换为设置的电话号码。 

对于我们在澳大利亚的运营商,如果 ANI 不在其提供的范围内,则作为新规定的一部分,呼叫将被阻止。 

我正在寻找的是这样的东西。 

如果不是 +61 2 XXXX XXXX - +61 2 XXXX XXXX 然后发送为 +612XXXX XXXX

我很抱歉我对正则表达式没有真正的理解,甚至不知道从哪里开始。

不过,我开始研究我对它的了解。请善待。如果有人可以将我指向“白痴指南”链接,我将不胜感激,因为我刚刚进入这个。

4

1 回答 1

0

当然有可能。这只是你想做多少工作的问题。我不太确定你想要掩盖什么以及你想要原封不动地传递什么。几个特定的​​例子会有所帮助。您需要支持多少种不同的格式、国家等?

对于这些问题,我倾向于采用这种方法:

  1. 规范化数据。让它们看起来都一样。因此,例如,删除所有非数字。+61 2 XXXX XXXX变成612XXXXXXXX. 在此步骤中,您还将填写隐含信息,例如不包含国家代码的本地号码。Number::Phone可能很有趣,但也请注意,它曾经是 CPAN 上最大的发行版。

  2. 现在应该更容易识别数字及其组件(因为如果不是,您没有正确执行第 1 步)。您可以使用解析器而不是正则表达式。也就是说,获取国家代码,然后据此决定接下来要发生的事情。这就是我对Business::ISBN中的 ISBN 所做的事情,它有一个组代码,然后是一个发布者代码(两者都是可变长度。

  3. 一旦你能认出这个数字,就很容易选择一个范围。如果它在范围内,您就知道要替换什么。

于 2021-03-15T11:44:23.690 回答