Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 正则表达式在IE8中不起作用_Javascript_Regex_Internet Explorer - Fatal编程技术网

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

Javascript 正则表达式在IE8中不起作用,javascript,regex,internet-explorer,Javascript,Regex,Internet Explorer,我将测试插入的字符是否为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\uFE7

我将测试插入的字符是否为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);
}
总是返回False。
这有什么问题吗?

首先,我看不出你的正则表达式有什么问题。另外,对于下面的html,IE 7到10总是告诉我结果等于true(我在向后兼容模式下使用IE 10.0)

IE没有设置e.charCode,但使用了e.keyCode。实际上,e.charCode仅由webkit浏览器使用。请阅读本手册第3章,了解不同浏览器中键盘事件之间的所有差异。我建议使用:

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

“我发现这句话……”那是两句话。哪个是
false
newregexp
返回…
?还有,你的控制台有错误吗?没有错误,第二行正是我一直在寻找的。谢谢
<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)
String.fromCharCode(e.which || e.keyCode)