Character sets will help out a ton here. You want to create a matching set for the characters that you want to validate:
- You can match alphanumeric with a
w
, which is the same as [A-Za-z0-9_]
in JavaScript (other languages can differ).
- That leaves
-
and spaces, which can be combined into a matching set such as [w- ]
. However, you may want to consider using s
instead of just the space character (s
also matches tabs, and other forms of whitespace)
- Note that I'm escaping
-
as -
so that the regex engine doesn't confuse it with a character range like A-Z
- Last up, you probably want to ensure that the entire string matches by anchoring the start and end via
^
and $
The full regex you're probably looking for is:
/^[w-s]+$/
(Note that the +
indicates that there must be at least one character for it to match; use a *
instead, if a zero-length string is also ok)
Finally, http://www.regular-expressions.info/ is an awesome reference
Bonus Points: This regex does not match non-ASCII alphas. Unfortunately, the regex engine in most browsers does not support named character sets, but there are some libraries to help with that.
For languages/platforms that do support named character sets, you can use /^[p{Letter}d\_-s]+$/
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…