我想匹配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 -返回false,所以它是好的)。
问题是,如果我得到安娜号,它返回为%1 (第一组),如果输入是4443,则为第二组。
有没有办法,这群人是一样的?据我所知,FreeSWITCH中没有命名组,尽管我可能错了。
发布于 2015-02-10 00:30:22
你可以用分支复位组
(?|^(?:\+?1)?([2-9]\d\d[2-9]\d{6})$|^(4443)$)将管道转义到FreeSWITCH:
(?\|^(?:\+?1)?([2-9]\d\d[2-9]\d{6})$\|^(4443)$)现在,您可以将任何一个组称为$1 (或FreeSWITCH中的%1 )。快速查看文档会告诉我,它们使用的是PCRE库,所以这应该是可行的。但是,我确信有更好的方法来做到这一点(包括韦特尔的回答中的那种)。
发布于 2015-02-09 18:05:42
作弊:
<condition regex="any">
<regex field="destination_number" expression="^(?:\+?1)?([2-9]\d\d[2-9]\d{6})$"/>
<regex field="destination_number" expression="^(4443)$"/>然而,如何在一个正则表达式条件下完成这个任务还不清楚。
不过,我更喜欢这种方式的配置,因为它不那么呆板,更容易理解。
发布于 2015-02-09 18:09:22
试试这个:^(?:+?1)?(2-9\d\d2-9\d\d{6}x4443)$
但是,我不认为第一个序列是正确的。因为每对(..)是一个$。变量。因此,您有$1 (?:+?1),$2用于2-9\d2-d2-9\d{6}或4443。这样做的目的是将整个序列放在一对括号中,如下所示:
^(aaaaaa\bbbbbb)$
这样,您将有一个$1变量,值为"aaaaaa“或"bbbbbb”(匹配的内容:)
https://stackoverflow.com/questions/28415892
复制相似问题