我遇到了一个非常奇怪的问题。
首先是一些信息:
我正在研究手机号码的检测功能。
我检查了国家/地区,然后将电话号码与此列表进行比较:http://en.wikipedia.org/wiki/List_of_mobile_phone_number_series_by_country#Italy
我的问题是,一切正常,期待一个电话号码。出于隐私原因,我无法完全提供此处。
例A:+49 172 8420 ***
例B:+49 170 7900 ***
当我在这些电话号码上使用我的tampermonkey脚本时,一切都可以正常使用示例B.示例A导致整个浏览器崩溃。
现在它变得有趣了: 我做了一些调试,发现崩溃是由这些线引起的:
else if(number.match(/^\+39/)) // Italy
{
if(number.match(/^\+39[0]?(310|110[015]|31[39]|32[0234789]|33[013456789]|34[0123456789]|3440|3505|3510|350|36[12368]|370|371[01]|3740|37[37]|38[0123589]|39[01237])/))
return mobile;
else
return landline;
}
正如您所看到的,这种情况应仅对以+39开头的电话号码起作用,但崩溃发生在+49的德语号码上。 德国的数字将在其他一些国家之后的约60行检查。
有人可以解释一下这部分代码有什么问题以及它导致崩溃的原因吗?
提前致谢
其他信息: 我之前使用过另一个代码,我对上面的代码进行了优化。旧的就像两个电话号码上的魅力一样
else if(number.match(/^\+39/)) // Italy
{
if(number.match(/^\+390310/) || number.match(/^\+3903110[015]/) ||
number.match(/^\+39031[39/) || number.match(/^\+39032[023478/) ||
number.match(/^\+39033[013456789]/) || number.match(/^\+39034[012356789]/) ||
number.match(/^\+3903440/) || number.match(/^\+3903505/) ||
number.match(/^\+3903510/) || number.match(/^\+390350/) ||
number.match(/^\+39036[012368]/) || number.match(/^\+390370/) ||
number.match(/^\+390371[01]/) || number.match(/^\+3903740/) ||
number.match(/^\+39037[37]/) || number.match(/^\+39038[0123589]/) ||
number.match(/^\+39039[01237]/))
return mobile;
else
return landline;
}