正则表达式,FreeSWITCH,匹配到第 1 组第二组
Regex, FreeSWITCH, match to group #1 second group
我想匹配 NA 号码或 4443
(voip 测试)
NA数经典,不用想这个:
^(?:\+?1)?([2-9]\d\d[2-9]\d{6})$
第二部分更简单:
^(4443)$
完整序列:
^(?:\+?1)?([2-9]\d\d[2-9]\d{6})$\|^(4443)$
有一些边缘测试序列,包括14443
(可选[+]1
前缀和4443
- returns false,所以很好)
问题是,如果我得到一个 NA 数字,它返回为 %1
(第一组)
如果输入为4443
,则为第二组。
有什么办法,组一样吗?据我了解,FreeSWITCH 中没有命名组,尽管我可能错了
作弊:
<condition regex="any">
<regex field="destination_number" expression="^(?:\+?1)?([2-9]\d\d[2-9]\d{6})$"/>
<regex field="destination_number" expression="^(4443)$"/>
不过,如何在一种正则表达式条件下做到这一点仍不清楚。
虽然我更喜欢这种方式在配置中,因为它不那么书呆子而且更容易理解
试试这个:^(?:+?1)?([2-9]\d\d[2-9]\d{6}|4443)$
但是,我认为第一个顺序不正确。因为每一对 (..) 都是一个 $.. 变量。所以你有 1 美元用于 (?:+?1),2 美元用于 [2-9]\d\d[2-9]\d{6} OR 4443。
这个想法是将整个序列放在一对括号中,如下所示:
^(aaaaaa|bbbbbb)$
这样,您将有一个 $1 变量,值为 "aaaaaa" 或 "bbbbbb"(将匹配什么:)
您可以使用 branch reset group:
(?|^(?:\+?1)?([2-9]\d\d[2-9]\d{6})$|^(4443)$)
随着 FreeSWITCH 的管道转义:
(?\|^(?:\+?1)?([2-9]\d\d[2-9]\d{6})$\|^(4443)$)
现在您可以将任一组称为 </code>(或 FreeSWITCH 中的 <code>%1
)。快速浏览文档告诉我他们使用 PCRE 库,所以这应该有效。但我确信有更好的方法可以做到这一点(包括 中的方法)。
我想匹配 NA 号码或 4443
(voip 测试)
NA数经典,不用想这个:
^(?:\+?1)?([2-9]\d\d[2-9]\d{6})$
第二部分更简单:
^(4443)$
完整序列:
^(?:\+?1)?([2-9]\d\d[2-9]\d{6})$\|^(4443)$
有一些边缘测试序列,包括14443
(可选[+]1
前缀和4443
- returns false,所以很好)
问题是,如果我得到一个 NA 数字,它返回为 %1
(第一组)
如果输入为4443
,则为第二组。
有什么办法,组一样吗?据我了解,FreeSWITCH 中没有命名组,尽管我可能错了
作弊:
<condition regex="any">
<regex field="destination_number" expression="^(?:\+?1)?([2-9]\d\d[2-9]\d{6})$"/>
<regex field="destination_number" expression="^(4443)$"/>
不过,如何在一种正则表达式条件下做到这一点仍不清楚。
虽然我更喜欢这种方式在配置中,因为它不那么书呆子而且更容易理解
试试这个:^(?:+?1)?([2-9]\d\d[2-9]\d{6}|4443)$
但是,我认为第一个顺序不正确。因为每一对 (..) 都是一个 $.. 变量。所以你有 1 美元用于 (?:+?1),2 美元用于 [2-9]\d\d[2-9]\d{6} OR 4443。 这个想法是将整个序列放在一对括号中,如下所示:
^(aaaaaa|bbbbbb)$
这样,您将有一个 $1 变量,值为 "aaaaaa" 或 "bbbbbb"(将匹配什么:)
您可以使用 branch reset group:
(?|^(?:\+?1)?([2-9]\d\d[2-9]\d{6})$|^(4443)$)
随着 FreeSWITCH 的管道转义:
(?\|^(?:\+?1)?([2-9]\d\d[2-9]\d{6})$\|^(4443)$)
现在您可以将任一组称为 </code>(或 FreeSWITCH 中的 <code>%1
)。快速浏览文档告诉我他们使用 PCRE 库,所以这应该有效。但我确信有更好的方法可以做到这一点(包括