星号正则表达式检查输入的数字是否有 10 位数字

Asterisk Regex check if number entered has 10 digits

我正在使用 Asterisk 11,我是新手。

我已将以下内容添加到我的 extensions.conf 文件中:

exten => 2, 1(start), Read(callBack,enter-phone-number10,10,,5)
 
exten => 2, n, GotoIf($[${REGEX("^\d{10}$" ${callBack})} = 1]?confirm)  -->not working, goes back to Start
   
exten => 2, n, GotoIf($[${REGEX("^\d{10}$" ${callBack})} != 1]?start) --> works, goes back to Start

exten => 2, n(confirm), Read(done,if-this-is-correct&press-1&otherwise&press-2)

我需要验证输入的号码是否有 10 位数字。

如果用户输入了10位数字,本来应该去确认,但是又要回去开始了。我做错了什么?

使用LEN函数似乎更简单

如果你想使用正则表达式,你应该使用这样的东西,就像手册中描述的那样:

exten => 2,n, GotoIf($[${REGEX("^[0-9]\{10\}$" ${callBack})}]?confirm:start)  -->not working, goes back to Start

https://www.voip-info.org/asterisk-func-regex/

检查下面的代码

exten => 2, 1(start), Read(callBack,enter-phone-number10,10,,5)
exten => 2, n, GoToIf($[LEN(${callBack}) = 10]?confirm:start)