I have this bit of Javascript,
if (/[A-Za-z0-9-]+/.test(sZip)) {
alert(Match!);
}
and I'm using this as my test case "1234;"
I don't want "1234;" to be a match, I want only for example "1234" or "12 34" or "12-34" to match.
/[A-Za-z0-9-]+$/
(The $ is the key: it means end of string, no more characters)
^, but it looks like this should probably not be done (see my comment beneath Boldewyn's answer).Start the regular expression with ^ and end it with $. This way you tell it to match the whole string against the pattern. MDN docs.
If you want the space matched, you need to include it in the brackets. For space and dash to delimit alphanum fields, take this approach:
/^([A-Za-z0-9]+[ -])*[A-Za-z0-9]+$/
---^ 0 or more "ABC123-" fields
---------------^ separated by either dash or space
---------------------^ but at least once a "ABC123" field (no dash)
^ since he want "12 34" to be matched, which contains a space that is not contained in his char-set [A-Za-z0-9-].^ from the question title.
Match!should be contained within quotes."12 34"should not be matched since it contains a space. Or did you forget to include it in your character class?