我正在尝试验证入站CLI是否与其中一种模式匹配:
CLI STARTING WITH:
所以我写了以下内容
exten => s,n,Set(isita=${REGEX("^(+39|0039|3|0[1-9])" ${cli})})
但是我收到了这个错误:
Malformed input REGEX(): Invalid preceding regular expression
我的正则表达式出了什么问题?
答案 0 :(得分:4)
您需要转义+
,而是使用此RegEx:
^(\\+39|0039|3|0[1-9])
时,您可以看到错误
通常在RegEx中(例如,在JavaScript中,它包含在/
中),您只需要一个\
,但是当RegEx存储在字符串中时(无论如何都是这样) ,你需要2 \
。
如果您有一个\
,则该字符串会尝试根据\+
创建一个字符(如\n
是换行符)。您需要第二个\
来声明不应转换第一个\
。
答案 1 :(得分:0)
答案是正确的,但在拨号方案中使用REGEXP并不是一个好主意。 Dialplan本身是regexp,它有基于cli的re regexp的形式
exten => _s/_39.,n,Noop(do something for cli starting with 39)
因此更多的星号方式使用dialplan,而不是regexp。