Javascript Regex-Match()
Ich möchte nur diese Funktion gibt ein int zurück, basierend auf einem string, sondern seine nicht funktioniert
Es wird entweder H oder V, gefolgt von 1 oder 2 stellen.
IE: H1 Rückkehr 99 H09 zurück 91 H10 return 90 H50 zurück 50 V1 return 1 V05 Rückkehr 5 V11 zurück 11 V50 zurück 50
Stelle wird mein string-thats gehen.
get100YardVersionEugene: function(spot)
{
var team = spot.match(/[A-Z]+/);
var yard = spot.match(/([0-9]+)/);
if (team == "H")
{
return 100-yard;
}
else //V
{
return yard;
}
},
aus irgendeinem Grund, wenn seine V9(oder H9), es bricht aber, wenn ich in V09 es funktioniert.
Kann mir jemand sagen warum?
EDIT: es bricht im...
Ich habe zwei Variablen start und Ende
so, ich habe so etwas wie
start = get100YardVersionEugene("V9")
und ich verwenden Sie start und end-to ziehen Sie es auf html5-canvas -
start = get100YardVersionEugene("V9") //nicht zeichnen richtig
start = get100YardVersionEugene("V09") //zeichnen richtig
Was meinst du mit "es bricht"? Ein Fehler? Ein Falsches Ergebnis? Welche?
Und Sie sah in Ihrem JavaScript-Konsole für alle gemeldeten Fehler?
Wenn Sie besorgt sind, dass die Leistung dann nicht nutzen regexp für etwas einfaches wie diese, sondern verwenden Sie die String-Routinen.
Und Sie sah in Ihrem JavaScript-Konsole für alle gemeldeten Fehler?
Wenn Sie besorgt sind, dass die Leistung dann nicht nutzen regexp für etwas einfaches wie diese, sondern verwenden Sie die String-Routinen.
InformationsquelleAutor ealeon | 2012-10-01
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie vereinfachen Ihre regex ein wenig, so dass es nur überprüft
H
oderV
.bezüglich der Anzahl, die Sie benötigen, sich daran zu erinnern, dass
match
gibt ein Array zurück, so dass Sie brauchen, um den Wert von index. Auch müssen Sie nicht die capture-Gruppe.Und eigentlich sollte man wirklich nur nutzen Sie eine regex.
InformationsquelleAutor I Hate Lazy
Versuchen, das einwickeln Hof in
[parseInt][1]
.Dies funktioniert nicht bei "H09". Siehe meine Antwort für den Grund : match liefert ein array.
InformationsquelleAutor gpojd
regexp ist total übertrieben für diesen. Versuchen Sie, String.charAt() oder String.substr():
Demo: http://jsfiddle.net/yzq9j/2/
InformationsquelleAutor PiTheNumber
Das Ergebnis der match-Funktion ist ein array. Tun Sie dies :
Und Sie müssen auch analysieren, das Ergebnis als int.
Alternativ, es scheint nicht, wie die regex sind hier wirklich gebraucht :
InformationsquelleAutor Denys Séguret
Du wohl umwandeln müssen, Ihren Garten in Anzahl
Dann könnte gut sein, zu prüfen, für die Konvertierung Gültigkeit mit isNaN Methode.
Hoffe, das hilft.
InformationsquelleAutor Seb T.
Modifizierte code:
spot.match(/([0-9]+)/)
ist returing ein arrayInformationsquelleAutor Anoop