diff --git a/06_react/faq/regulaere-ausdruecke.md b/06_react/faq/regulaere-ausdruecke.md
new file mode 100644
index 0000000..4887fde
--- /dev/null
+++ b/06_react/faq/regulaere-ausdruecke.md
@@ -0,0 +1,48 @@
+# Reguläre Ausdrücke
+
+## Links
+
+-
+-
+-
+-
+-
+
+| Zeichen | Basiszeichen |
+| ------- | ---------------------------------------------- |
+| `\w` | Buchstabe, Ziffer oder Unterstrich |
+| `\W` | Ein Sonderzeichen |
+| `\d` | Eine Ziffer zwischen 0 bis 9 |
+| `\D` | Ein Zeichen, das keine Ziffer ist |
+| `\s` | Ein Weißraum (Leerzeichen, Zeilenumbruch usw.) |
+| `\S` | Jedes Zeichen außer Weißraum |
+| `\b` | Wortgrenze |
+| `\B` | keine Wortgrenze |
+
+| Zeichen | Metazeichen |
+| ------- | ------------------------------------ |
+| `.` | findet alle Zeichen außer Zeilenende |
+| `^` | Anfang eines Strings |
+| `$` | Ende eines Strings |
+| | | Alternativen |
+| `()` | Teile des Suchmusters abgrenzen |
+| `[]` | Zeichenklassen |
+| `{}` | Replikatoren |
+
+| Zeichen | Zeichenklassen |
+| ------------- | ---------------------------------- |
+| `[xyz]` | beliebiger Buchstabe x, y oder z |
+| `[^xyz]` | jeder Buchstabe außer x, y oder z |
+| `[0-9]` | jede Ziffer zwischen 0 bis 9 |
+| `[a-z]` | jeder kleine Buchstabe von a bis z |
+| `[A-Za-z0-9]` | alle Buchstaben und Ziffern |
+| `[a-zß-ü]` | alle Kleinbuchstaben und Umlaute |
+
+| Zeichen | Replikatoren |
+| ------- | ------------------------------------ |
+| `{n,m}` | mindestens n mal, höchstens m mal |
+| `{n,}` | mindestens n mal |
+| `{n}` | genau n mal |
+| `*` | 0 mal oder öfter, äquivalent zu {0,} |
+| `+` | 1 mal oder öfter, äquivalent zu {1,} |
+| `?` | 0 oder 1 mal, äquivalent zu {0,1} |
diff --git a/06_react/faq/regulaere-ausdruecke.pdf b/06_react/faq/regulaere-ausdruecke.pdf
new file mode 100644
index 0000000..062f994
Binary files /dev/null and b/06_react/faq/regulaere-ausdruecke.pdf differ
diff --git a/06_react/unterricht/tag37/02_react-with-forms/src/utils/validators/validate.js b/06_react/unterricht/tag37/02_react-with-forms/src/utils/validators/validate.js
index c688127..753126a 100644
--- a/06_react/unterricht/tag37/02_react-with-forms/src/utils/validators/validate.js
+++ b/06_react/unterricht/tag37/02_react-with-forms/src/utils/validators/validate.js
@@ -1,6 +1,10 @@
const validate = (formData) => {
const errors = {};
+ const emailRegExp = new RegExp(
+ /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/,
+ );
+
if (!formData.firstname) {
errors.firstname = 'Firstname is required';
}
@@ -11,7 +15,7 @@ const validate = (formData) => {
if (!formData.email) {
errors.email = 'Email is required';
- } else if (!/\S+@\S+\.\S+/.test(formData.email)) {
+ } else if (!emailRegExp.test(formData.email)) {
errors.email = 'Email is invalid';
}