2016-08-16 6 views
1

Ich brauche Regex Zeichenfolge zu filtern mit den folgenden Bedingungen passen:Javascript Regex filtern String

  • Die Gesamtlänge der Zeichenfolge kann nicht 300 Zeichen nicht überschreiten.
  • Die Zeichenfolge darf nicht mehr als 4 Hashtags enthalten.
  • Die Zeichenfolge darf nicht mehr als 1 URL enthalten.
  • Die Zeichenfolge darf nicht aus Großbuchstaben bestehen.

Beispiel Gültige Text:

Entwickler Vertrauen #StackOverflow zu helfen #coding Probleme zu lösen und Stack-Überlauf Karriere nutzen, um Beschäftigungsmöglichkeiten zu finden. Bitte besuchen https://stackoverflow.com/

Beispiel ungültig Text:

Entwickler Vertrauen #StackOverflow zu helfen #coding Probleme zu lösen und Stack-Überlauf Karriere nutzen, um Beschäftigungsmöglichkeiten zu finden. Bitte besuchen Sie https://stackoverflow.com/ oder https://stackoverflow.com/company/about

Ungültige Zeichenfolge oben, weil es zwei-URL enthält.

Jede mögliche Hilfe geschätzt und vielen Dank :)

+0

definiert enthalten, was eine „URL“ ist, dass String enthalten soll. –

+0

@ anshul-rai: Nein :(weil ich nicht viel über Regex –

+0

@ derek- 朕 會 功夫: jede URL ... –

Antwort

3

denke ich this Sie

^(?!^([^#]*#[^#]*){5,}$)(?!(.*http(s{0,1}):\/\/){2,})(?=.*[a-z]).{0,300}$ 
  • (?!^([^#]*#[^#]*){5,}$) dies die Zeichenfolge enthalten sollte nicht mehr als 4 #
  • wird dafür sorgen, wird dazu beitragen,
  • (?!(.*http(s{0,1}):\/\/){2,}) Dies wird sicherstellen, dass Zeichenfolge sollte nicht mehr als 2 URL
  • (?=.*[a-z]) dies enthalten wird dafür sorgen, mindestens 1 Kleinbuchstabe
  • .{0,300} dies wird diese Zeichenfolge sicherstellen sollte nicht mehr als 300 Charter
+1

würde ich ' str.length <= 300' statt regex durch Überprüfung der Länge Ich denke, alles in einem einzigen Regex zu tun ist Anti-Pattern. – inf3rno