Javascript Regex崩溃谷歌浏览器

Javascript Regex崩溃谷歌浏览器,javascript,google-chrome,tampermonkey,Javascript,Google Chrome,Tampermonkey,我遇到了一个非常奇怪的问题 首先,请提供一些信息: 我正在开发一个手机号码检测功能。 我查看国家,然后将电话号码与此列表进行比较: 我的问题是,除了一个电话号码,一切都很好。出于隐私的原因,我不能在这里完全提供 示例A:+49 172 8420*** 例B:+491707900*** 当我在这些电话号码上使用tampermonkey脚本时,示例B中的一切都很好。示例A导致我的整个浏览器崩溃 现在它变得有趣起来: 我进行了一些调试,发现崩溃是由以下几行代码引起的: else if(number.m

我遇到了一个非常奇怪的问题

首先,请提供一些信息: 我正在开发一个手机号码检测功能。 我查看国家,然后将电话号码与此列表进行比较:

我的问题是,除了一个电话号码,一切都很好。出于隐私的原因,我不能在这里完全提供

示例A:+49 172 8420*** 例B:+491707900***

当我在这些电话号码上使用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;                
        }

这是一个内部网站。我不能发布一个关于它是如何发生的实例。在这种情况下,我需要知道为什么这个部分会导致崩溃,因为它根本不应该被执行,它不应该也不适合我们