I need an expression that will only accept:
- numbers
- normal letters (no special characters)
- –
Spaces are not allowed either.
Example:
The regular expression should match:
this-is-quite-alright
It should not match
this -is/not,soålright
Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.
Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.
Lost your password? Please enter your email address. You will receive a link and will create a new password via email.
Please briefly explain why you feel this question should be reported.
Please briefly explain why you feel this answer should be reported.
Please briefly explain why you feel this user should be reported.
You can use:
This matches strings, possibly empty, that is wholly composed of uppercase/lowercase letters (ASCII A-Z), digits (ASCII 0-9), and a dash.
This matches (as seen on rubular.com):
And rejects:
Explanation:
^and$are beginning and end of string anchors respectively[...]is a character classa-z,A-Z,0-9in a character class define ranges-as a last character in a class is a literal dash*is zero-or-more repetitionregular-expressions.info
Variation
The specification was not clear, but if
-is only to be used to separate “words”, i.e. no double dash, no trailing dash, no preceding dash, then the pattern is more complex (only slightly!)This matches strings that is at least one “word”, where words consists of one or more “alpha”, where “alpha” consists of letters and numbers. More “words” can follow, and they’re always separated by a dash.
This matches (as seen on rubular.com):
And rejects: