I need a regular expression to match strings that have letters, numbers, spaces and some simple punctuation (
.,!"'/$). I have
^[A-Za-z0-9 _]*[A-Za-z0-9][A-Za-z0-9 _]*$ and it works well for alphanumeric and spaces but not punctuation. Help is much appreciated.
Just add punctuation and other characters inside classes (inside the square brackets):
This matches every string containing spaces, _, alphanumerics, commas, !, ", $, ... Pay attention while adding some special characters, maybe you need to escape them: more info here
Assuming from your regex that at least one alphanumeric character must be present in the string, then I'd suggest the following:
(?=.*[A-Z0-9]) lookahead checks for the presence of one ASCII letter or digit; the nest character class contains all ASCII alphanumerics including underscore (
\w) and the rest of the punctuation characters you mentioned. The slash needs to be escaped because it's also used as a regex delimiter. The
/i modifier makes the regex case-insensitive.
©2020 All rights reserved.