lua: pattern matching and extracting a phone number

孤者浪人 提交于 2019-12-11 14:30:20

问题


I am having trouble crafting a function that has the following requirements in Lua:

  • Takes a string phone_number and 2-digit country_code as input.
  • phone_number has 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

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!