M4 Regexp Examples

From Kolmisoft Wiki
(Redirected from M2 Regexp Examples)
Jump to navigationJump to search

Basic Regexp operators and building blocks are explained here.



Regexp for matching

Regexp matching is used in:

  • Origination Points
    • CLI/ANI Allow (Whitelist)
    • CLI/ANI Deny (Blacklist)
    • CLD/DNIS Allow (Whitelist)
    • CLD/DNIS Deny (Blacklist)
  • Termination Points
    • CLI/ANI Allow (Whitelist)
    • CLI/ANI Deny (Blacklist)
    • CLD/DNIS Allow (Whitelist)
    • CLD/DNIS Deny (Blacklist)
  • Dial Peers
    • Source regexp
    • Source deny regexp
    • Destination Regexp
    • Destination deny regexp


Validate regex

The regex can be validated using https://regexr.com/ (or any other online regex editor).

Examples

Regexp Explanation
.* everything
^[0-9]+$ only digits
^[0-9]{9,}$ only digits, number more than 8 digits (9, 10, 11...)
^[0-9]{0,9}$ only digits, number less than 9 digits (1, 2, 3, 4, 5, 6, 7, 8)
^\\+?[0-9]+$ optional + sign and only digits
^370[0-9]+$ only digits starting with 370
^370.*$ anything starting with 370
^(37[0-1]|44)[0-9]*$ only digits starting with 370 or 371 or 44
^380(67|97|68|98)[0-9]*$|^998[0-9]+$ only digits starting with 380(67,97,68,98) or 998(0-9), where 380(67,97,68,98) = 38067,38097,38068,38098 and 998(0-9) = 9980,...,9988,9989.
^380(67|97|68|98)[0-9]{5,9}$|^998[0-9]{5,9}$ only digits starting with 380(67,97,68,98) or 998, but number of digits after each prefix should be between 5 and 9. So, for example, 3809712345 will match, but 380971234 or 380971234567890 will NOT match.
^370[138][0-9]+$ only digits starting with 3701, 3703, 3708



Regexp for transformation

Regexp transformation is used in:

Format

Regexp transformation format is:

/match_expression/replacement_expression/flags

  • match_expression - POSIX regular expression
  • replacement_expression - replacement expression with back references (explained here) to matched tokes: \1, \2, …, \9
  • flags (optional):
    • i - match ignore case
    • g - replace all matches

Before putting Transformations into production, it is advisable to test them on various values.

Test in Linux console

Execute sed command (add s before transformation s/regex/replacement/flags):

echo '00370123456789' | sed -E 's/^00//'

Test in online sed live editor

If you do not have access to the Linux console, use https://sed.js.org/ (or any other online sed editor).

Examples

Transformation Original number Modified number Comment
/^00// 003701234567 003701234567 Cut prefix 00
/^370/8/ 370123456789 8123456789 Replace 370 with 8
/\+// +370123456789 370123456789 Cut + (here + is escaped by \ since it is special regex symbol)
/\+370/86/ +370123456789 86123456789 Cut prefix +370, add prefix 86
/\+?(.*)/+\1/ 370123456789 +370123456789 Add + if it is not present already
/(.*)/999\1/ 370123456789 999370123456789 Add 999 in front of any number
/(.*)/999$CIP\1/ 370123456789 999888370123456789 $CIP is a variable that contains Code from MNP database (if MNP is used and if number is matched). This variable only works on Destination Transformation Regexp. The example assumes that there is a record in the MNP database with Code 888 for number 370123456789.



See also