0

I need to write some Javascript to check an input to only allow number and letter and '-' and '_' and space bar.

Here is my regular expression

var pattern = /^([a-zA-Z])([a-zA-Z0-9_-]){1,80}$/;

Above regex does not include space bar. How can I add space bar condition into my regex.

Marcel Korpel
  • 21,536
  • 6
  • 60
  • 80
Giffary
  • 3,060
  • 12
  • 50
  • 71

1 Answers1

3

For me this:

var pattern = /^([a-zA-Z])([a-zA-Z0-9_ -]){1,80}$/;

works.

Maybe you ran into the issue with trying it like this ?

var pattern = /^([a-zA-Z])([a-zA-Z0-9_- ]){1,80}$/;

and the regex Parser thought you ment "underscore to spacebar" and not "underscore dash and spacebar ? (Didn't test that)

Edit

Did a little testing

<script>
alert(/^([a-zA-Z])([a-zA-Z0-9_-]){1,80}$/.test("Aa232423"));
// true
alert(/^([a-zA-Z])([a-zA-Z0-9_ -]){1,80}$/.test("Aa232 423"));
// true 
alert(/^([a-zA-Z])([a-zA-Z0-9_- ]){1,80}$/.test("Aa232423"));
// parser error: invalid range in character set
</script>

Do i guess i was right with my assumption ;)

Secound Edit in Response to OPs Comment:

<script>
alert(/^([a-zA-Z])([a-zA-Z0-9_ -]){1,80}$/.test("Aa232-423"));
//true
alert(/^([a-zA-Z])([a-zA-Z0-9_ -]){1,80}$/.test("Aa232-42 3"));
//true
</script>
edorian
  • 38,542
  • 15
  • 125
  • 143