<div class="gmail_quote">2009/2/4 Klaus Darilion <span dir="ltr">&lt;<a href="mailto:klaus.mailinglists@pernau.at">klaus.mailinglists@pernau.at</a>&gt;</span><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<br>
<br>
D Tucny schrieb:<br>
<div class="Ih2E3d">&gt; 2009/2/4 Klaus Darilion &lt;<a href="mailto:klaus.mailinglists@pernau.at">klaus.mailinglists@pernau.at</a><br>
</div>&gt; &lt;mailto:<a href="mailto:klaus.mailinglists@pernau.at">klaus.mailinglists@pernau.at</a>&gt;&gt;<br>
<div><div></div><div class="Wj3C7c">&gt;<br>
&gt; &nbsp; &nbsp; Hi!<br>
&gt;<br>
&gt; &nbsp; &nbsp; I am going nuts using REGEXP. I just want to verify if a variable<br>
&gt; &nbsp; &nbsp; contains a valid +E164 phone number.<br>
&gt;<br>
&gt; &nbsp; &nbsp; These, the the pattern is ^\+[0-9]+<br>
&gt;<br>
&gt; &nbsp; &nbsp; First I tried:<br>
&gt;<br>
&gt; &nbsp; &nbsp; &nbsp; Set(pattern=^\+[0-9]+);<br>
&gt; &nbsp; &nbsp; &nbsp; if (${REGEX(&quot;${pattern}&quot; ${${var}})})<br>
&gt;<br>
&gt; &nbsp; &nbsp; but that does not work, the backslash is removed, as seen in the log<br>
&gt; &nbsp; &nbsp; file:<br>
&gt;<br>
&gt; &nbsp; &nbsp; &nbsp; func_strings.c: FUNCTION REGEX (^+[0-9]+)(+4312345<br>
&gt; &nbsp; &nbsp; &lt;<a href="http://www.adaanumber.com/" target="_blank">http://www.adaanumber.com/</a>&gt;)<br>
&gt;<br>
&gt; &nbsp; &nbsp; So, meanwhile I tried to escape the backslash. I tried:<br>
&gt; &nbsp; &nbsp; &nbsp; Set(pattern=^\\+[0-9]+);<br>
&gt; &nbsp; &nbsp; &nbsp; Set(pattern=^\\\+[0-9]+);<br>
&gt; &nbsp; &nbsp; &nbsp; Set(pattern=^\\\\+[0-9]+);<br>
&gt;<br>
&gt; &nbsp; &nbsp; But always the same result:<br>
&gt;<br>
&gt; &nbsp; &nbsp; &nbsp; func_strings.c: FUNCTION REGEX (^+[0-9]+)(+4312345)<br>
&gt;<br>
&gt; &nbsp; &nbsp; How can I solve this problem?<br>
&gt;<br>
&gt;<br>
&gt; Try something like... pattern=^[+]\{1\}[0-9]+<br>
<br>
</div></div>Are you sure? The \ should be in front of the +<br>
<div><div></div><div class="Wj3C7c"><br></div></div></blockquote><div><br>Pretty sure...<br><br>exten =&gt; *56,1,NoOp(&quot;Starting regexp test&quot;)<br>exten =&gt; *56,n,Set(pattern=^[+]\{1\}[0-9]+)<br>exten =&gt; *56,n,Set(var=123456789)<br>
exten =&gt; *56,n,NoOp(${IF(${REGEX(&quot;${pattern}&quot; ${var})}?&quot;Match&quot;:&quot;No Match&quot;)}))<br>exten =&gt; *56,n,Set(var=+123456789)<br>exten =&gt; *56,n,NoOp(${IF(${REGEX(&quot;${pattern}&quot; ${var})}?&quot;Match&quot;:&quot;No Match&quot;)}))<br>
<br><br>[Feb&nbsp; 4 23:49:21] DEBUG[20518] pbx.c: Launching &#39;NoOp&#39;<br>[Feb&nbsp; 4 23:49:21] VERBOSE[20518] logger.c:&nbsp;&nbsp;&nbsp;&nbsp; -- Executing [*56@phonedefault:1] NoOp(&quot;SIP/*01-09bd8ff8&quot;, &quot;&quot;Starting regexp test&quot;&quot;) in new stack<br>
[Feb&nbsp; 4 23:49:21] DEBUG[20518] pbx.c: Launching &#39;Set&#39;<br>[Feb&nbsp; 4 23:49:21] VERBOSE[20518] logger.c:&nbsp;&nbsp;&nbsp;&nbsp; -- Executing [*56@phonedefault:2] Set(&quot;SIP/*01-09bd8ff8&quot;, &quot;pattern=^[+]\{1\}[0-9]+&quot;) in new stack<br>
[Feb&nbsp; 4 23:49:21] DEBUG[20518] pbx.c: Launching &#39;Set&#39;<br>[Feb&nbsp; 4 23:49:21] VERBOSE[20518] logger.c:&nbsp;&nbsp;&nbsp;&nbsp; -- Executing [*56@phonedefault:3] Set(&quot;SIP/*01-09bd8ff8&quot;, &quot;var=123456789&quot;) in new stack<br>
[Feb&nbsp; 4 23:49:21] DEBUG[20518] func_strings.c: FUNCTION REGEX (^[+]{1}[0-9]+)(123456789)<br>[Feb&nbsp; 4 23:49:21] DEBUG[20518] pbx.c: Function result is &#39;0&#39;<br>[Feb&nbsp; 4 23:49:21] DEBUG[20518] pbx.c: Function result is &#39;&quot;No Match&quot;&#39;<br>
[Feb&nbsp; 4 23:49:21] DEBUG[20518] pbx.c: Launching &#39;NoOp&#39;<br>[Feb&nbsp; 4 23:49:21] VERBOSE[20518] logger.c:&nbsp;&nbsp;&nbsp;&nbsp; -- Executing [*56@phonedefault:4] NoOp(&quot;SIP/*01-09bd8ff8&quot;, &quot;&quot;No Match&quot;)&quot;) in new stack<br>
[Feb&nbsp; 4 23:49:21] DEBUG[20518] pbx.c: Launching &#39;Set&#39;<br>[Feb&nbsp; 4 23:49:21] VERBOSE[20518] logger.c:&nbsp;&nbsp;&nbsp;&nbsp; -- Executing [*56@phonedefault:5] Set(&quot;SIP/*01-09bd8ff8&quot;, &quot;var=+123456789&quot;) in new stack<br>
[Feb&nbsp; 4 23:49:21] DEBUG[20518] func_strings.c: FUNCTION REGEX (^[+]{1}[0-9]+)(+123456789)<br>[Feb&nbsp; 4 23:49:21] DEBUG[20518] pbx.c: Function result is &#39;1&#39;<br>[Feb&nbsp; 4 23:49:21] DEBUG[20518] pbx.c: Function result is &#39;Match&#39;<br>
[Feb&nbsp; 4 23:49:21] DEBUG[20518] pbx.c: Launching &#39;NoOp&#39;<br>[Feb&nbsp; 4 23:49:21] VERBOSE[20518] logger.c:&nbsp;&nbsp;&nbsp;&nbsp; -- Executing [*56@phonedefault:6] NoOp(&quot;SIP/*01-09bd8ff8&quot;, &quot;Match)&quot;) in new stack<br><br>
So, the \ is still stripped (ast_app_separate_args removes \), but, it doesn&#39;t matter as the + is bracketed so it&#39;s not the first character after the ^ and so regcomp doesn&#39;t fail...<br><br>d<br></div></div>