星号应用程序拨号方案中的模式匹配

时间:2014-02-12 07:32:11

标签: regex linux pattern-matching sip asterisk

我需要为这样的星号sip调用制作模式。

  1. 模式仅包含“*”,“#”和0-9位数
  2. pattern的第一个参数对于“+”符号是可选的。
  3. 喜欢匹配

    *1203#023212232
    +*1203#122
    12345555
    

    但拒绝这些案件

    3434+23443
    *2334%2323
    

    我像这样准备了模式

    exten => _[*|#|+|0-9].,1,Answer()
    

    但这也是接受以下模式,我不想匹配。

    *2334%2323
    

2 个答案:

答案 0 :(得分:0)

怎么样:

\+?[0-9#*]+

你可能想要锚定它:

^\+?[0-9#*]+$ 

答案 1 :(得分:0)

我不认为Asterisk在正则表达式中支持这么多的灵活性。

实现此目的的最佳方法是将此扩展变量传递给AGI并在那里进行正则表达式匹配。

     exten => _.,1,AGI(Your AGI SCRIPT,${EXTEN})  // Pass the extension number to your Agi script.If that match your requirement set an agi variable **match** to 1 

     exten => s,n,GotoIf($["${match}" = "1"]?proceed:endcall) //Check the match variable status and proceed based on that 

     exten => s,n(proceed),Answer()
     exten => s,n(endcall),Hangup()

这只是实现您的要求的一种选择