2

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

6594567890
6594567891
6594567892
6594567893
92345678
92345679
92345680

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

  1. 如果它的前缀不等于 659 和 9 那么它将被拒绝。
  2. 如果它的前缀等于 659 但长度不等于 10 那么它将被拒绝。
  3. 如果它的前缀等于 9 但长度不等于 8 那么它将被拒绝。

目前我有以下使用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 或示例代码将不胜感激。

4

1 回答 1

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>

于 2012-10-24T10:23:17.087 回答