我有一个代表电话号码的字符串。
格式为:[电话号码] - [类型{1-3}] [ - | “”] [客户姓名]
电话号码是强制性的,但类型和名称不是。
类型必须以“ - ”开头,长度为1-3个字符,以“ - ”或“”(空格)或无结果(字符串结尾)结束
我试过这个正则表达式:
var phonrType = "-([A-Za-z]{1,3})(-?|\\s)";
Match m = Regex.Match(str, phonrType);
但我无法弄清楚如何在没有名字的情况下处理电话类型的字符串:
"03 7963324A-FAX" --> the regex fails for this input
我不知道怎么说在类型之后可以有“ - ”,“或”,或者什么都没有(其他任何东西都不是有效的手机类型)。
以下是一些用于澄清的输入字符串:
"03 7963324-BOB/BOB" --> no phone type
"03 7963324-MOB-BOB/BOB" --> phone type is: "MOB"
"03 7963324A-FAX" -->phone type is "FAX"
感谢。
答案 0 :(得分:1)
尝试使用:
(?:-([A-Za-z]{1,3})(?:[- ]|$))
答案 1 :(得分:1)
我会使用带有lookbehinds和lookaheads的正则表达式模式来匹配我想要的而不捕获其他组。
(?<=\-)[A-Za-z]{1,3}(?=\-|$)
以下是测试结果:
"03 7963324-BOB/BOB" --> no match
"03 7963324-MOB-BOB/BOB" --> the whole match is "MOB"
"03 7963324A-FAX" --> the whole match is "FAX"