使用 $ 匹配输入结束在其他任何地方都会给出零长度匹配,但没有与 WebKit 匹配的证据:
function showBug() {
Result = "the end.".replace( /(end\.)([\s]|$)?/img, makeChange );
return;
}
function makeChange() {
for ( var i = 0; i < arguments.length; i += 1 ) {
document.write( "arg" + i + " -->" + arguments[ i ] + "<--" + "<BR>" );
}
}
给
arg0 -->end.<--
arg1 -->end.<--
arg2 -->undefined<--
arg3 -->4<--
arg4 -->the end.<--
为AppleWebKit/534.55.3 (KHTML, like Gecko) Version/5.1.5 Safari/534.55.3
,也为AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.162 Safari/535.19
。
Opera ( Presto/2.10.229 Version/11.62
)、FF ( Gecko/20100101 Firefox/10.0.2
) 和 IE ( MSIE 8.0; Trident/4.0
) 都给出
arg0 -->end.<--
arg1 -->end.<--
arg2 --><--
arg3 -->4<--
arg4 -->the end.<--
这意味着我可以检测到 $2 中的匹配项(实际上是将 url 上的尾随点解释为不是 url 的一部分)。我目前正在为 WebKit 添加一个尾随空格,然后将其删除,但我想知道是否有人有更好的解决方案并且可以确认我应该将此作为错误提出。