einige Probleme Nachdem die regex herauszufinden, dies entsprechen:Regex: Problem zu schaffen Anpassungsmuster
function Array() { [native code] }
Ich versuche nur den Text übereinstimmen, die auftreten werden, wo „Array“ ist.
einige Probleme Nachdem die regex herauszufinden, dies entsprechen:Regex: Problem zu schaffen Anpassungsmuster
function Array() { [native code] }
Ich versuche nur den Text übereinstimmen, die auftreten werden, wo „Array“ ist.
Möchten Sie herausfinden, welcher Typ eine Variable in Javascript ist? Wenn das ist, was wollen, können Sie nur den Konstruktor an den Konstruktor des Objekts vergleichen, die sie erstellt denken:
var array = new Array();
if(array.constructor == Array)
alert("Is an array");
else
alert("isn't an array");
Das ist nicht wirklich der beste Weg, um die Dinge in Javascript zu gehen. Javascript hat kein Typsystem wie C#, das garantiert, dass eine Variable bestimmte Mitglieder hat, wenn sie von einem bestimmten Konstruktor erstellt wird, weil JavaScript eine ziemlich dynamische Sprache ist und alles, was ein Objekt von seinem Konstruktor erhält, zur Laufzeit überschrieben werden kann.
es ist stattdessen wirklich besser Ente eingeben zu verwenden und Ihre Objekte fragen, was sie tun können, als das, was sie sind: http://en.wikipedia.org/wiki/Duck_typing
if(typeof(array.push) != "undefined")
{
// do something with length
alert("can push items onto variable");
}
In Perl, dann würden Sie verwenden:
m/^\s*function\s+(\w+)\s*\(/;
Die Variable '$1
' würde erfassen den Funktionsnamen.
Wenn das Schlüsselwort function
nicht am Anfang der Zeile steht, dann müssen Sie (etwas) härter arbeiten.
[Edit:. Zwei '\s*
' Sequenzen hinzugefügt]
Frage, ob das funktioniert ... hier ist mein Testfall:
Testskript:
while (<>)
{
print "$1\n" if (m/^\s*function\s+(\w+)\s*\(/);
}
-Test Eingangsleitungen (ja, absichtlich falsch ausgerichtet):
function Array() { ... }
function Array2 () { ... }
func Array(22) { ... }
Testausgang:
Array
Array2
Getestet mit Perl 5.10.0 auf Solaris 10 (SPARC): Ich glaube nicht, die Plattform oder Version ist ein wichtiger Faktor - ich würde erwarten, dass es das gleiche arbeiten irgendeine plausible Version von Perl.
Ist es so schwer ein \ s * am Anfang hinzuzufügen? Und vielleicht ist es keine schlechte Idee (obwohl ich JavaScript nicht kann), ein \ s * zwischen dem (\ w +) und dem \ (? –
@Chris: +1. Ich öffnete das Kommentarfeld, um das gleiche zu empfehlen ... – Swanand
Da jeder schon pingelig ist;) Warum die^und die * s überhaupt einbeziehen? Es gibt keine Notwendigkeit für diese Einschränkung, eine einfache \ bFunktion, um eine Wortgrenze anzuzeigen, sollte es tun. Das \ s * am Ende ist auch überflüssig, wieso kümmert sich überhaupt was nach dem Spiel? – Tomalak
So später, ich habe dies die fast funktioniert bekommen:
[function\s]((\S+)+)(?=\(\))
aber sie paßt immer noch den Raum vor dem Array
Entfernen Sie die '[', ']'. – Gumbo
ich denke, dass Ihre Frage sehr unklar ist. – Cerebrus
Das ist meine Saite. Der Text, in dem sich "Array" befindet, ändert sich. Also versuche ich das zu erreichen. – Geuis
Sie versuchen also, den Text zwischen "function" und "()" anzupassen? – Goran