簡體   English   中英

測試正則表達式時 Console.log 不起作用

[英]Console.log not working when testing regex

有人可以解釋為什么我的控制台日志不起作用嗎?

每次我選擇文件進行驗證以查看控制台中是否顯示任何內容時沒有任何反應

 document.addEventListener("DOMContentLoaded", function() { document.getElementById('file').onchange = function() { var extPermitidas = ['txt']; var extArquivo = this.value.split('.').pop(); if (typeof extPermitidas.find(function(ext) { return extArquivo == ext; }) == 'undefined') { alert('The file cannot be used because its extension is not allowed!'); return; } else { var file = this.files[0]; var reader = new FileReader(); reader.onload = function(progressEvent) { // By lines var lines = this.result.split('\\n'); let N = /^(N1\\d{14}.{78}|N9\\d{14}.{14}\\d{6})$/; for (var line = 0; line < lines.length; line++) { if (N.test(lines[line]) == N) { console.log("valid file"); } else { console.log("invalid file"); } } }; reader.readAsText(file); } alert('file successfully validated!'); } });
 <input type="file" id="file" />

編輯

在條件if (N.test(lines[line]) == N)會不會有問題?

這似乎是一個函數上下文問題。 嘗試更改var file = this.files[0]; var file = document.getElementById("file").files[0]; .

this有時會很棘手,因為它的值取決於函數的調用方式(運行時綁定)。 請參閱https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/this

編輯:條件if (N.test(lines[line]) == N)很奇怪。 test()方法執行正則表達式和指定字符串之間的匹配搜索,並返回 true 或 false。 因此,您不需要將 test 的返回與== N進行比較。 另外,您幾乎總是想使用三重等號 (===)。

您是否已經檢查過條件或嘗試將 console.log 放在代碼的各個部分? 也許這是事件觸發的問題。 我試過用我的控制台運行你的正則表達式,我想它運行順利。

正則表達式結果

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM