2016-05-03 5 views
0

Der Versuch, Strings zu validieren, wie ...Google Forms regex Validierung für Eigenname

  • Mein Firmenname (pass)
  • Namen meiner Firma (gescheitert)
  • mein Name des Unternehmens (gescheitert)
  • Namen meiner Firma (gescheitert)
  • MY Firmenname (pass)
  • COMPANY (Pass)

es wollen einen richtigen Namen Format entsprechen (Caps auf den ersten Buchstaben jedes Wortes) ...

  • Mein Firmenname

Ich kann den folgenden Regex verwenden und es funktioniert großartig bei https://regex101.com/. Aber wenn ich versuche, es in einer Google Formular-Validierung zu verwenden, tut es NICHT Arbeit. Ich denke, Google mag die \p Flags nicht.

^([\p{Lu}]\p{L}*\s*)+$ 

Gibt es eine Möglichkeit, das zu einem regulären Ausdruck zu konvertieren, die nicht die \p Flags nicht verwendet? Ich habe versucht, die folgende Regex String und es tat NICHT der Trick entweder ...

^([[A-Z]][a-z]*\s*)+$ 
+0

Did '^ ([AZ] [az] * \ s *) + $' nicht mit Google Forms funktioniert oder nicht Ihren Vorstellungen entsprechen – kit

+0

https (warum?): // support .google.com/docs/antwort/3378864? hl = en –

+0

@kit Sehr geehrter Herr! Ich schwöre, ich habe es verdammt noch mal ausprobiert, wenn es und es nicht funktionieren würde ... Doch sobald ich es hier tippe, denke ich, dass meine Butterfinger nicht das Beste von mir bekommen haben ... Gezz .. Um deine Frage zu beantworten, scheint es großartig zu arbeiten. Setzen Sie es in eine Antwort. ;) –

Antwort

1

Wenn Sie nicht notwendig Notwendigkeit Unicode tun, versuchen Sie dies:
^(([A-Z]+)|([A-Z][a-z]+))(\s+(([A-Z]+)|([A-Z][a-z]+)))*$

Jedes Wort aussehen kann COMPANY oder Company, aber nicht wie company, mit Leerzeichen zwischen Wörtern (nach dem 2.).

Übereinstimmungen: My Company Name, MY COMPANY Name, COMPANY.
Passt nicht zu: my ComPany name, my Company Name, my company name.

(([A-Z]+) Matches GROSSBUCHSTABEN
([A-Z][a-z]+) Matches Aktivierte
(...)|(...) Einstimmungen zuerst oder Sekunden Gruppe
* 0 oder viele Words
\s+ Matches ein oder mehrere Leerzeichen vor Worte nach dem 2.
nach dem ersten Wort erlaubt ^ - Beginn der Zeichenfolge, $ - Ende der Zeichenfolge

Eine einfachere Lösung, wenn MyCompanyName und MYCOMPANy auch akzeptabel sind (erster Buchstabe groß geschrieben):
^([A-Z][a-z]*\s*)+$

mit regex101 Getestet

+0

Passt es 'COMPANY'? –

+0

Tatsächlich testet über bei https://regex101.com/ es würde nicht "Mein Firmenname" übereinstimmen und ich brauche es. –

+0

Korrigiert meine Regexp, überprüfen Sie es – kit

2

Diese Regex

^(?:[A-Z](?:[A-Z]*|[a-z]*))(?:\s+[A-Z](?:[A-Z]*|[a-z]*))*$ 

Regex Demo

arbeiten Regex Pannen

^ #Start of string 
(?:[A-Z](?:[A-Z]*|[a-z]*)) #Match at least one group starting with alphabets [A-Z] 
(?:\s+[A-Z](?:[A-Z]*|[a-z]*))* #Check whatever follows contains space and meets the same requirement as above 
$ #End of string 
+0

Vielen Dank! Obwohl ich denke, dass diese Antwort viel mehr als nötig war, war es eine großartige Antwort. Ich liebe die Regex-Demo, die du auch zur Antwort hinzugefügt hast! –