问题
I am having trouble crafting a function that has the following requirements in Lua:
- Takes a string
phone_numberand 2-digitcountry_codeas input. phone_numberhas the form {1 || ""}{country_code}{10 or 11-digit mobile number}
I need as output the 10 or 11-digit mobile number.
Example I/O:
phone_number= "552234332344", country_code= "55" => "2234332344"
phone_number= "15522343323443", country_code= "55" => "22343323443"
Thanks!
回答1:
Try "(1?)(%d%d)(%d+)". Using this with your examples:
print(("15522343323443"):match("(1?)(%d%d)(%d+)"))
print(("5522343323443"):match("(1?)(%d%d)(%d+)"))
will print:
1 55 22343323443
55 22343323443
If you need exactly 10 or 11 digits in the phone number, then specify %d 10 times and then add %d?. %d is a character class that matches any number and question mark modifier matches the previous character or a character class 0 or 1 time.
回答2:
Try this
^[0-9]{1,3}\s\|{2}\s[0-9]{10,11}$
This expression is for pattern like 1 || 9945397865 like you asked i guess . .
EDITED: I guess this works
- fetch string length using
string.len('552234332344')=> Output: 12 - match string using
string.match ('552234332344', ^%d)=> Output: 552234332344 if matches - fetch country code using
string.sub ('552234332344', 1, 2)=> Output: 55 - fetch phone no. using
string.sub('552234332344', 3)=> Output: 2234332344
来源:https://stackoverflow.com/questions/12294661/lua-pattern-matching-and-extracting-a-phone-number