如何使用JavaScript验证文本文件的内容?

时间:2012-10-24 09:44:19

标签: javascript

如何使用javascript验证文本文件的内容?例如,我有一个文本文件包含:

    6594567890
    6594567891
    6594567892
    6594567893
    92345678
    92345679
    92345680

因此,我需要在某些条件下验证内容:

  1. 如果其前缀不等于659和9那么它将被拒绝。
  2. 如果其前缀等于659但长度不等于10则会被拒绝。
  3. 如果其前缀等于9但长度不等于8则会被拒绝。
  4. 目前我使用JS有以下代码:

        <input type="file" name="txt_list" id="txt_list" class="inpText" size="26"  />
        <script>
              var input_file = document.getElementById('txt_list');
              input_file.onchange = function() {
              var file = this.files[0];
              var reader = new FileReader();
              reader.onload = function(ev) {
                  // Show content  (ev.target === reader)
                  alert(ev.target.result);
                };
                 reader.readAsText(file);
              };
         </script>
         <font color="FF0000" style="font-weight:bolder;">
                                <b>* Compulsory</b>&nbsp;&nbsp;&nbsp;&nbsp;
         </font>
    

    任何想法如何做到这一点? jsfiddle或示例代码将受到高度赞赏。

2 个答案:

答案 0 :(得分:3)

猜猜它正在阅读您关注的每一行? ev.target.result是一个长链字符,它必须分成字符串。对我来说,如何评估线条并不是很清楚,所以请坚持下去

<input type="file" name="txt_list" id="txt_list" class="inpText" size="26"  />
<script>
var input_file = document.getElementById('txt_list');
input_file.onchange = function() {
    var file = this.files[0];
    var reader = new FileReader();
    reader.onload = function(ev) {
        var str='';
        for (var i=0;i<ev.target.result.length;i++) {
            str+=ev.target.result[i];
            if (ev.target.result[i]=="\n") { //new line
                //probably very misunderstood evaluation 
                if (((str.substr(4,7)=='659') && (str.length!=10)) ||
                   ((str.substr(4,7)!='659') && (str.length==9)) ||
                   ((str.substr(4,5)=='9') && (str.length!=8))) {
                    alert('rejected');
                } else {
                    alert('accepted');
                }
                //reset the line
                str='';
            } 
        }
    };
    reader.readAsText(file);
};
</script>
<font color="FF0000" style="font-weight:bolder;">
<b>* Compulsory</b>&nbsp;&nbsp;&nbsp;&nbsp;</font>

答案 1 :(得分:-3)

JS无法访问文件系统(除非使用NodeJS或类似)。 也就是说,你只需要写一些正则表达式,或者甚至是一个简单的if / else if / else条件匹配长度和前几个数字(根据你的要求)。

示例:

var a = "659000000"
if ( a.match(/^659/) && a.length == 9 ) {
    //it starts with 659 and length is 9!
}else if ....

}else....

}