请查看以下JavaScript。我已经把东西从中取出了,因此您可以专注于问题的本质。

您会注意到我连续两次调用Preppath功能,并通过完全相同的字符串。在Firefox和IE8中,此函数每次(如预期)都会提醒。但是,在Chromium 5.0.375.127(55887)Ubuntu 10.04中,该功能是第一次返回true,尽管输入完全相同!

<script type="text/javascript"> 
    function prepPath(str)
    {   
        var regX = /[^\s/"'\\].*[^\s/"'\\]/g;
        if(regX.test(str))
        {
            alert("true: " + str);
        }
        else
        {
            alert("false; " + str);
        }
    }

    prepPath("/desktop"); // alerts: true
    prepPath("/desktop"); // alerts: false 
</script> 

为什么在铬中第二次返回错误?

有帮助吗?

解决方案

规格上有一些歧义,即何时要重置直言不讳(回想一下他们有状态)。您可以这样做:

var regX = new RegExp(/[^\s/"'\\].*[^\s/"'\\]/g);

实时示例: http://jsbin.com/irate

或这个:

var regX = /[^\s/"'\\].*[^\s/"'\\]/g;
regX.lastIndex = 0;

实时示例: http://jsbin.com/irate/2

那些对它的研究的人告诉我,这实际上不是一个彻底的错误,而是歧义。不仅是铬,其他浏览器的某些版本也有类似的问题。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top