我不确定为什么正则表达式 - \b((\+65[\s\-]*)?[3689]\d{3}[\s\-]*\d{4})\b
不适用于+6565066859
答案 0 :(得分:1)
由于在开头放置的单词边界,您的模式当前不起作用。请注意,单词边界将匹配单词字符和
在您的情况下,\b
位于字符串的开头和+
之间,它将匹配,因此您的第一个可选组将永远不会匹配。该模式的其余部分由一个8位数字组成(如果我们暂时忘记空格和连字符),但您尝试测试的数字由10个字符组成,因此两个字边界不能同时匹配。
我认为您可以将模式重写为((?:(\+65[\s\-]*)|\b)[3689]\d{3}[\s\-]*\d{4})\b
,从而匹配+65或字边界。不确定您是否在模式中使用捕获组,因此我保持原样。