Ich muss alle Elemente eines Arrays (Strings) überprüfen, wenn sie mit Regex übereinstimmt, die auch in einem Array gespeichert ist.Überprüfen Sie mehrere Zeichenfolgen für die Zuordnung mehrerer Regex (beide Array)
Also hier ist der String-Array und und regex Array (in diesem Beispiel alle drei Elemente die gleiche Regex sind - ich weiß, dass nicht Sinn macht):
let array = [ 'just some', 'strings', 'which should be tested', 'by regex' ];
let regexes = [ /([^.]+)[.\s]*/g, /([^.]+)[.\s]*/g, /([^.]+)[.\s]*/g ];
Jetzt würde ich zwei _.each
-loops wie folgt aus:
_.each(array, function(element) {
_.each(regexes, function(regex) {
let match = regex.exec(element);
if (match && match.length)
doSomething(match);
});
});
Aber was will ich erreichen, ist, dass, wenn nur eine regex ist passend, ich diese Zeichenfolge bearbeiten möchten. Mit diesem sinnlosen Regex-Array wäre das nie der Fall, da es keine oder drei passende Regex-Ausdrücke gäbe.
Außerdem würde ich gerne wissen, ob es möglich ist, diese verschachtelte each-Schleife zu vermeiden.
aktualisieren
Beispiel:
let array = [ '1. string', 'word', '123' ]
let regexes = [/([a-z]+)/, /([0-9]+)/]
array[0] should NOT pass the test, as both regex are matching
array[1] should pass the test, as just ONE regex is matching
array[2] should pass the test, as just ONE regex is matching
so nur das Ergebnis für array [1] und array [2] sollte für die weitere Verarbeitung doSomething(match)
Benötige ich die 'var = match'? Kann ich nicht einfach 'regexes.some (r => r.exec (a))' '? – user3142695
nur wenn du etwas mit 'match' liebst. –
'some' überprüft, ob eines der Elemente in einem Array einen Test besteht, richtig? Das Ergebnis wäre also das gleiche, wenn eine Regex übereinstimmt oder mehrere Regexes mit der Zeichenfolge übereinstimmen, richtig? Aber ich möchte überprüfen, ob nur eine Regex mit der Zeichenfolge übereinstimmt. Wenn mehrere Regexes übereinstimmen, sollte es auch ungültig sein, da es keine Übereinstimmung gibt. – user3142695