ref:
Wie durchsucht man in Javascript ein Array nach einer Teilstring-Übereinstimmung?
Die hier angegebene Lösung ist generisch im Gegensatz zur Lösung 4556343 # 4556343 , für die eine vorherige Analyse erforderlich ist, um eine Zeichenfolge zu identifizieren, mit der zu arbeiten ist join(), die keine Komponente einer der Array-Zeichenfolgen ist.
Außerdem ist dieser Code /!id-[^!]*/korrekter, /![^!]*id-[^!]*/um den Fragenparametern zu entsprechen:
- "Suche ein Array ..." (von Zeichenfolgen oder Zahlen und nicht von Funktionen, Arrays, Objekten usw.)
- "Damit nur ein Teil der Zeichenfolge übereinstimmt" (Übereinstimmung kann überall sein)
- "Rückgabe des ... übereinstimmenden ... Elements" (Singular, nicht ALL, wie in "... the ... elementS")
- "mit der vollen Zeichenfolge" (einschließlich Anführungszeichen)
... NetScape / FireFox-Lösungen (siehe unten für a JSON Lösung):
javascript:
alert(
["x'!x'\"id-2",'\' "id-1 "', "item","thing","id-3-text","class" ] .
toSource() . match( new RegExp(
'[^\\\\]("([^"]|\\\\")*' + 'id-' + '([^"]|\\\\")*[^\\\\]")' ) ) [1]
);
oder
javascript:
ID = 'id-' ;
QS = '([^"]|\\\\")*' ;
RE = '[^\\\\]("' +QS+ ID +QS+ '[^\\\\]")' ;
RE = new RegExp( RE ) ;
RA = ["x'!x'\"id-2",'\' "id-1 "', "item","thing","id-3-text","class" ] ;
alert(RA.toSource().match(RE)[1]) ;
Anzeigen "x'!x'\"id-2".
Vielleicht ist es "sauberer", das Array zu durchsuchen, um ALLE Übereinstimmungen zu finden.
javascript:
RA = ["x'!x'\"id-2",'\' "id-1 "', "item","thing","id-3-text","class" ] ;
function findInRA(ra,id){
ra.unshift(void 0) ;
return ra . toSource() . match( new RegExp(
'[^\\\\]"' + '([^"]|\\\\")*' + id + '([^"]|\\\\")*' + '[^\\\\]"' ,
'g' ) ) ;
}
alert( findInRA( RA, 'id-' ) . join('\n\n') ) ;
zeigt an:
"x '! x'" id-2 "
"'" id-1 ""
"id-3-text"
Verwenden von JSON.stringify():
javascript:
RA = ["x'!x'\"id-2",'\' "id-1 "', "item","thing","id-3-text","class" ] ;
function findInRA(ra,id){
return JSON.stringify( ra ) . match( new RegExp(
'[^\\\\]"([^"]|\\\\")*' + id + '([^"]|\\\\")*[^\\\\]"' ,
'g' ) ) ;
}
alert( findInRA( RA, 'id-' ) . join('\n\n') ) ;
zeigt an:
["x '! x'" id-2 "
, "'" id-1 ""
, "id-3-text"
Falten:
- Das "unescaped" globale RegExp ist
/[^\]"([^"]|\")*id-([^"]|\")*[^\]"/gmit dem \buchstäblich zu finden. Um ([^"]|\")*Zeichenfolgen mit allen "als maskierten Zeichenfolgen abzugleichen \", \muss die selbst als maskiert werden ([^"]|\\")*. Wenn dies als zu verkettende Zeichenfolge bezeichnet wird id-, \muss jede erneut maskiert werden([^"]|\\\\")* !
- Eine Suche ,
IDdie hat eine \, *, ", ..., muss auch über entwertet werden .toSource()oder JSONoder ....
nullSuchergebnisse sollten zurückgeben ''(oder ""wie in einer LEEREN Zeichenfolge, die NO enthält "!) oder [](für alle Suchvorgänge).
- Wenn die Suchergebnisse zur weiteren Verarbeitung in den Programmcode aufgenommen werden sollen,
eval()ist z eval('['+findInRA(RA,ID).join(',')+']').
-------------------------------------------------- ------------------------------
Exkurs:
Überfälle und Fluchten? Ist dieser Code in Konflikt geraten?
Die Semiotik, Syntax und Semantik des /* it has no ... =! */nachdrücklichen Konflikts wird deutlich.
Bedeutet "nein =":
- "no '=' sign" wie in
javascript:alert('\x3D') (Not! Führen Sie es aus und sehen Sie, dass es gibt!),
- "keine Javascript-Anweisung mit dem Zuweisungsoperator",
- "nicht gleich" wie in "nichts identisch in einem anderen Code" (frühere Codelösungen zeigen, dass es funktionale Äquivalente gibt),
- ...
Das Zitieren auf einer anderen Ebene kann auch mit den unten aufgeführten Javascript-Protokoll-URIs im Sofortmodus erfolgen. (// Kommentare enden in einer neuen Zeile (auch bekannt als nl, Strg-J, LineFeed, ASCII-Dezimalzahl 10, Oktal 12, Hex A). Dies erfordert ein Anführungszeichen, da durch Einfügen eines nl durch Drücken der Eingabetaste der URI aufgerufen wird.)
javascript: alert('visible') ;
javascript:
javascript:
javascript:
Hinweis: Schneiden Sie eine der javascript:Zeilen aus und fügen Sie sie als URI im Sofortmodus ein (zumindest höchstens? In FireFox), um sie zuerst javascript:als URI-Schema oder -Protokoll und den Rest als JS-Beschriftung zu verwenden.
results = arr.filter(function (v) {return /id-/.test(v)});. Und dann können Sie mit den Ergebnissen machen, was Sie wollen.