You must log in or register to comment.
Jr developer told to sanitize inputs to keep db secure. Comes up with this.
tbf regular expressions suck
How so? I have been getting much more comfortable with it lately, but I am curious what downsides there are
The downsides are having to relearn it every time you need to understand it.
Just use something like https://regex101.com/
not really i just meant they suck to remember how to write without looking up :)
Here is my cheatsheet that has been very helpful. Obviously, this will not teach you how RegEx works, but is a good quick reference when I forget the exact syntax for something.
RegExp
Character classes
Pattern Description .Any character, except newline \wWord \dDigit \sWhitespace \WNot word \DNot digit \SNot whitespace []Any of a, b, or c []Characters between aande[]Digit between 1and9[[:print:]]Any printable character including spaces [^abc]Any character except a,borcAnchors
Pattern Description \GStart of match ^Start of string * End of string * \AStart of string \ZEnd of string \zAbsolute end of string \bA word boundary \BNon-word boundary ^abcStart with abcEnd with abcFor multiline patterns (
mflag),^andwill act as start and end of line.Escaped characters
Pattern Description \. \* \\Escape special character used by regex \tTab \nNewline \rCarriage return Groups
Pattern Description (abc)Capture group (a|b)Match aorb(?:abc)Match abc, but don’t capture\1Substituted with text matched of the 1st capturing group Quantifiers
Pattern Description a*Match 0 or more a+Match 1 or more a?Match 0 or 1 a{5}Match exactly 5 a{,3}Match up to 3 a{3,}Match 3 or more a{1,3}Match between 1 and 3 Lookahead & Lookbehind
Pattern Description a(?=b)Match ainbabybut not inbaya(?!b)Match ainStanbut not inStab(?<=a)bMatch bincrabsbut not incribs(?<!a)bMatch binfibbut not infab(?<![a-z])abc(?![a-z])Match abcwithout any letters before/afterRaw Markdown
# RegExp ## Character classes | Pattern | Description | | ------------- | ---------------------------------------- | | `.` | Any character, except newline | | `\w` | Word | | `\d` | Digit | | `\s` | Whitespace | | `\W` | Not word | | `\D` | Not digit | | `\S` | Not whitespace | | `[abc]` | Any of a, b, or c | | `[a-e]` | Characters between `a` and `e` | | `[1-9]` | Digit between `1` and `9` | | `[[:print:]]` | Any printable character including spaces | | `[^abc]` | Any character except `a`, `b` or `c` | ## Anchors | Pattern | Description | | ------- | ---------------------- | | `\G` | Start of match | | `^` | Start of string \* | | `$` | End of string \* | | `\A` | Start of string | | `\Z` | End of string | | `\z` | Absolute end of string | | `\b` | A word boundary | | `\B` | Non-word boundary | | `^abc` | Start with `abc` | | `abc$` | End with `abc` | For multiline patterns (`m` flag), `^` and `$` will act as start and end of line. ## Escaped characters | Pattern | Description | | ---------- | -------------------------------------- | | `\. \* \\` | Escape special character used by regex | | `\t` | Tab | | `\n` | Newline | | `\r` | Carriage return | ## Groups | Pattern | Description | | --------- | -------------------------------------------------------- | | `(abc)` | Capture group | | `(a\|b)` | Match `a` or `b` | | `(?:abc)` | Match `abc`, but don't capture | | `\1` | Substituted with text matched of the 1st capturing group | ## Quantifiers | Pattern | Description | | -------- | --------------------- | | `a*` | Match 0 or more | | `a+` | Match 1 or more | | `a?` | Match 0 or 1 | | `a{5}` | Match exactly 5 | | `a{,3}` | Match up to 3 | | `a{3,}` | Match 3 or more | | `a{1,3}` | Match between 1 and 3 | ## Lookahead & Lookbehind | Pattern | Description | | --- | --- | | `a(?=b)` | Match `a` in `baby` but not in `bay` | | `a(?!b)` | Match `a` in `Stan` but not in `Stab` | | `(?<=a)b` | Match `b` in `crabs` but not in `cribs` | | `(?<!a)b` | Match `b` in `fib` but not in `fab` | | `(?<![a-z])abc(?![a-z])` | Match `abc` without any letters before/after |
still better than showing some crappy virtual keypad
yandev is that you






