gpt4 book ai didi

javascript - 正则表达式在 IE8 中不起作用

转载 作者:行者123 更新时间:2023-11-29 15:41:14 27 4
gpt4 key购买 nike

我要测试插入的字符是 rtl 还是 ltr,我使用了这段代码:

function checkRTL(s) {
var ltrChars = 'A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02B8\u0300-\u0590\u0800-
\u1FFF' + '\u2C00-\uFB1C\uFDFE-\uFE6F\uFEFD-\uFFFF',
rtlChars = '\u0591-\u07FF\uFB1D-\uFDFD\uFE70-\uFEFC',

rtlDirCheck = new RegExp('^[^' + ltrChars + ']*[' + rtlChars + ']');

return rtlDirCheck.test(s);
}
;
function checkSpecialChars(s) {
var sChars = '0-9`~!@#$%^&*()_+\\-=\\|\\[\\]{};\'":,.<>/',
checkChar = new RegExp('^[' + sChars + ']+');
return checkChar.test(s);
}
var input = $('#password').on('keypress', keypress);

function keypress(e) {
setTimeout(function () {
var isRTL = checkRTL(String.fromCharCode(e.charCode));
var isSpecial = checkSpecialChars(String.fromCharCode(e.charCode));

var dir = isRTL ? 'RTL' : 'LTR';
if(dir=='RTL'){
document.getElementById("langDir").innerHTML="<img src='../img
/signup_images/att.png'>Hello!";
$("#langDir").css("display","block");
}
else
{
document.getElementById("langDir").innerHTML="";
$("#langDir").css("display","none");
}
}, 100);
}

此代码在 IE 9、10、Chrome 和 Firefox 中完美运行。但它在 IE8 中不起作用经过一些调试后,我发现这一行:

    rtlDirCheck = new RegExp('^[^' + ltrChars + ']*[' + rtlChars + ']');

return rtlDirCheck.test(s);

总是返回 False。这有什么问题?

最佳答案

首先,我可以检测到您的正则表达式没有任何问题。此外,对于以下 html,IE 7 到 10 总是告诉我结果等于 true(我在向后兼容模式下使用 IE 10.0)。

<html>
<body>
<script>
var ltrChars = 'A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02B8\u0300-\u0590\u0800-\u1FFF' + '\u2C00-\uFB1C\uFDFE-\uFE6F\uFEFD-\uFFFF',
rtlChars = '\u0591-\u07FF\uFB1D-\uFDFD\uFE70-\uFEFC',
rtlDirCheck = new RegExp('^[^' + ltrChars + ']*[' + rtlChars + ']');

alert("result = "+ rtlDirCheck.test('\u0591') );
</script>
</body>
</html>

因此问题不在于此功能。它很可能是它的输入:

String.fromCharCode(e.charCode)

IE 不设置e.charCode,而是使用e.keyCode。实际上 e.charCode 仅供 webkit 浏览器使用。看看这个优秀的第 3 章 breakdown不同浏览器中键盘事件之间的所有差异。我建议使用:

String.fromCharCode(e.which || e.keyCode)

关于javascript - 正则表达式在 IE8 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18606063/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com