【发布时间】:2021-12-05 13:57:38
【问题描述】:
我有一个从网站中提取德国手机号码的正则表达式:
[^\d]((\+49|0049|0)1[567]\d{1,2}([ \-/]*\d){7})(?!\d)
正如您在demo 中看到的那样,它运行良好。唯一不匹配的模式是:
+49 915175461907
请在链接的演示中查看更多示例。问题是+49 后面的空格。
我需要如何更改当前的正则表达式模式才能匹配这些类型的模式?
【问题讨论】:
-
单个可选空格可以用空格加问号来匹配。
-
不要在开头使用
[^\d],而是使用负面的后视:(?<!\d)。这样它也将直接匹配字符串的开头。对于这种情况,您当前的正则表达式失败。 -
不正确的欺骗,因为问题不仅仅是允许空格。如果输入以
+4915207829969开头,否定字符类[^\d]将导致它不匹配