从fancytext.js了解复杂的功能

时间:2015-09-05 19:28:32

标签: javascript

刚刚浏览了fancyinput.js的代码并遇到了以下函数(您还可以看到相同的函数 HERE ):

charDir = {
    lastDir : null,
    check : function(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',
            ltrDirCheck = new RegExp('^[^'+rtlChars+']*['+ltrChars+']'),
            rtlDirCheck = new RegExp('^[^'+ltrChars+']*['+rtlChars+']');

        var dir = rtlDirCheck.test(s) ? 'rtl' : (ltrDirCheck.test(s) ? 'ltr' : '');
        if( dir ) this.lastDir = dir;
            return dir;
    }
} 

这个功能到底在做什么?它的目的是什么?

如果我在控制台中运行以下代码:

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+']');

console.log(rtlDirCheck);

rtlDirCheck的值原来是一堆奇怪的不可读字符。

有人可以解释这个功能在做什么吗?

1 个答案:

答案 0 :(得分:1)

此功能检查文本的方向。在英语等语言中,我们从左到右(ltr)键入,但在阿拉伯语等语言中,他们从右到左(rtl)键入。此函数检查从右到左语言中常见字符的存在和顺序,并根据它们是否存在,确定用户写入的方向。