2016-12-09 2 views
0

Ich habe eine Liste der Studenten IDs mit den Ergebnissen, drei Testergebnisse, jeder Student erhielt. Ich habe einen FileReader erstellt, um Text aus einem lokalen Dokument zu lesen und die Ergebnisse in einer Variablen zu speichern. Ich habe eine Regex für das Ziehen der Information, die ich brauche, die funktionieren sollte, aber Null zurückgibt.regex bekomme eine Zeichenfolge mit Leerzeichen

Die Information wird gespeichert als;

C00695260 
93 
76 
86 

Die Regex im verwenden versucht, ist, /C\d{8}\s\d{2}\d?\s\d{2}\d?\s\d{2}\d?/g was unterstreicht, was ich in erhabenen will, aber nicht im Programm oder Browser-Konsole. Es funktioniert wie erwartet, bis nach, /C\d{8}\s\d{2}\d?\s/g, aber ich kann nicht herausfinden, warum. Dies ist mein erster Beitrag, es tut mir so leid, wenn ich irgendetwas falsch mache; Diese

dosn't Arbeit

var textIn; 
var r =/B\d{8}\s\d{2}\d?\s\d{2}\d?\s\d{2}\d?/g; 
var print; 
//crete a function the read listen fot the file to change 
document.getElementById('openFile').addEventListener('change', function(){ 
    var reader = new FileReader(); 
    reader.onload = function(){ 

     textIn = this.result; 

     print = textIn.match(r); 

     document.getElementById('Filecontents').textContent = print; 
    } 
    reader.readAsText(this.files[0]); 
}) 

Das funktioniert!

var textIn; 
var r =/(B\d{8})\s/g; 
var print; 
//crete a function the read listen fot the file to change 
document.getElementById('openFile').addEventListener('change', function(){ 
    var reader = new FileReader(); 
    reader.onload = function(){ 

     textIn = this.result; 

     print = textIn.match(r); 

     document.getElementById('Filecontents').textContent = print; 
    } 
    reader.readAsText(this.files[0]); 
}) 
+0

In Firefox meine Konsole mit Ihrem Versuch OK ist: ' "C00695260 93 76 86" .match (/ C \ d {8} \ s \ d {2} \ d ? \ s \ d {2} \ d? \ s \ d {2} \ d?/g) 'liefert' Array ["C00695260 93 76 86"] ' –

+0

Ich habe eine externe TXT-Datei eingelesen und die Ergebnisse gespeichert in einer Variablen, Es hat über 180 Personen und dort Ergebnisse, der Code funktioniert, wenn ich eine Person Ergebnisse in der Konsole speichern und wenn ich mit dem Regex-Code bis nach dem ersten Leerzeichen ausführen – KSwaby

+0

[Sollte gut funktionieren] (https://jsfiddle.net/ehbeo18a/). Vielleicht möchten Sie auch den Regex verwenden, wie er von jimplode bereitgestellt wird, um sicherzustellen, dass Sie alle Zahlen im Bereich von 0-100 anvisieren. (Effizienzweise könnte es besser sein, aber es ist zumindest effektiv.) –

Antwort

1

Sie so etwas wie dies wollen: (C \ d {8}) \ s (\ d {1,3}) \ s (\ d {1,3}) \ s (\ d { 1,3})

(C \ d {8}) = A numerierten erfasst Gruppe für eine "C" gefolgt von 8 Ziffern

\ s = white space

(\ d suchen {1 , 3}) = Eine nummerierte erfasste Gruppe, die nach 1 - 3 Ziffern sucht.

wiederholen

enter image description here

enter image description here

+0

Der Grund, warum das OP '\ d?' Hinzugefügt hat, ist wahrscheinlich '100', was hier nicht funktionieren würde. Durch das OP bestätigt werden. ;) –

+2

Wenn Sie dafür sorgen müssen, müssen Sie auch nur für eine einzelne Ziffer sorgen? Wenn ja, sollten Sie (\ d {1,3}) verwenden – jimplode

+0

Ja, die Ergebnisse sind von 100. Die Regex oben funktioniert auch nicht, könnte es eine Javascript-Sache sein? Die Regex funktioniert bis nach dem ersten Leerzeichen. – KSwaby

Verwandte Themen