2016-06-30 10 views
2

Mit regex Ich bin attampting die Eingabe des Benutzers an eine der folgenden Szenarien zu begrenzen:Regulärer Ausdruck Anforderungen nicht streng genug

  • http (s): //www.instagram.com/user
  • www .instagram.com/user
  • http (s): //instagram.com/user
  • instagram.com/user

sobald jedoch der letzte Fall erfüllt ist, wird es akzeptieren jede zufällige Zeichenfolge vor der "instagram.com", das ist nicht imperativ, aber es ist mehr für meinen eigenen Seelenfrieden. Der reguläre Ausdruck Ich verwende ist die folgende:

control.value.match(/(?:(?:http|https):\/\/)?(?:www.)?instagram.com\/([A-Za-z0-9-_]+)/igm) 

Ich möchte es haben, so dass nur eine der oben genannten Fälle bestätigen. Vielen Dank im Voraus für die Hilfe.

+1

Wenn alle Benutzer eingeben können ist die richtige URL für Instagram, warum tun Sie es nicht für sie durch Einfügen oder Erstellen einer Schaltfläche – adeneo

+0

@adeneo gibt es mehr als eine Option für sie verfügbar, das Beispiel ist nur einer von ihnen – ConorJohn

Antwort

3

Wenn Sie sicherstellen möchten, dass der gesamte Inhalt einem regulären Ausdruck entspricht, gibt es mehrere Möglichkeiten, aber mein Favorit ist nur den regulären Ausdruck selbst verwenden.

Sie können die Zeilenanfang ^ und Zeilenende $ Zeichen verwenden. Diese werden als anchors und man kann über sie bei http://www.regular-expressions.info/anchors.html

Ihr Code wie folgt aussehen würde lauten:

control.value.match(/^(?:(?:http|https):\/\/)?(?:www.)?instagram.com\/([A-Za-z0-9-_]+)$/igm) 

Dies funktioniert nur, weil Sie an einer einzigen Textzeile suchen. Ihr m Flag würde mehrzeiligen Text implizieren (was mit einer URL keinen Sinn ergibt), also sollten Sie sich http://www.regular-expressions.info/modifiers.html genauer ansehen. In JavaScript werden Modifikatoren für den gesamten Ausdruck als Flags am Ende platziert. Sie können Beispiele davon bei http://www.rexegg.com/regex-modifiers.html sehen.

In Ihrem Beispiel sind Ihre Flags igm und kommen nach dem Schließen /.

+0

Brilliant, danke so viel Mann, für einen Moment dachte ich, es war die Javascript-Match() verursacht mir den Ärger. Das^hat einen Charme, ich habe auch das m entfernt, danke ich werde das Tutorial auch noch durchgehen, Regex ist nicht meine Stärke – ConorJohn

3

Wenn Sie^am Anfang Ihres Regex setzen, akzeptiert es keinen Müll vorher. Weil der^der Anfang der Zeile ist

+1

Und $ für das Ende der Zeile – Rouz