2016-04-21 8 views
2

Ich versuche, eine Zeichenfolge mit Regex in Javascript zu bestätigen, dass ein Benutzer Eingaben in eine <form>, die mit http:// beginnt und enthält eine ~ somwhere innerhalb dieser Zeichenfolge. , was ich habe, istRegex für eine Zeichenfolge, beginnend mit http: // und enthält ~

(/^(http?:\/\/)\~/.test(string))

Aber es ist nicht ganz funktioniert.

Irgendwelche Tipps?

+2

'If (str.IndexOf ('http: //') === 0 && str.IndexOf ('~')> 0)' ??? – adeneo

+0

@adeneo Danke das hat funktioniert! Können Sie erklären, wie indexOf funktioniert? und was ist der Unterschied zwischen == und ===? – Enigma

+1

@Enigma es gibt Ihnen den Startindex der Teilzeichenfolge in der angegebenen Zeichenfolge .. –

Antwort

1

Die Regex Lösung würde wie folgt aussehen:

(/^https?:\/\/.*\~/.test(string)) 

Ihre regex fast richtig war, waren Sie gerade die .* fehlt die

für Zeichen nach dem http:// Teil prüft

ich dort auch Ein- setzen s? in Fall https war gültig

+0

Warum bist du '~' eigentlich entkommen? – zerkms

+0

Nun, ehrlich gesagt, ich habe die Flucht eingeschlossen, weil der OP es entkommen hatte. Dargestellt, könnte es in JS besonders sein. Tut es etwas weh? Ich weiß, dass es in der Konsole funktioniert hat, als ich es getestet habe. – MikeTGW

3

Keine Notwendigkeit oder RegEx, können Sie String#startsWith und String#includes verwenden.

Da diese Methoden nicht von allen Browsern unterstützt werden, können Sie Polyfills von MDN für ältere Browser verwenden.

+0

Cool, das hat auch funktioniert! Es ist ordentlich, wie es mehrere Methoden gibt, um dieses Problem zu lösen. – Enigma

1

Ich denke, Ihre Regex sollte zu diesem repariert werden:

(/^(http?:\/\/).*\~/.test(string)) 
Verwandte Themen