我有以下格式的电话号码,第一个数字后跟“-”(破折号)是国家代码,“x”后面的最后一个数字是分机号。中间的任何数字都是电话号码,我想捕获电话号码和分机号。
1-1231312x24 //phone: 1231312, extension: 24
21-1231312x24 //phone: 1231312, extension: 24
1-343454 //phone: 343454
1-2-3545645x243 //phone: 2-3545645, extension :243
4343444x25 //phone: 4343444, extension: 25
454545545 //phone: 454545545
我正在尝试 regex (\d*-?)(\d+)x?(\d*)
,这适用于我的前 3 个示例,但不适用于其余示例。
您当前的正则表达式与第二组
(\d+)
(电话号码部分)中的破折号不匹配。要匹配该部分中数字之间的连字符,您可以使用[\d-]+
或更简洁的\d+(?:-\d+)*
。请参阅 regex101 上的此演示 (锚定到
^
开始)我进一步更改了您的第一组
(\d*-?)
,以(\d+-)?
防止消耗没有连字符的数字。