字母数字,短划线和下划线,但没有空格正则expression式检查Javascript

试图检查正则expression式的input。

该字段只能使用字母数字字符,破折号和下划线,不能有空格。

但是,下面的代码允许空格。

我错过了什么?

var regexp = /^[a-zA-Z0-9\-\_]$/; var check = "checkme"; if (check.search(regexp) == -1) { alert('invalid'); } else { alert('valid'); } 

提前致谢。

但是,下面的代码允许空格。

不,不。 但是,它只会匹配长度为1的input。对于长度大于或等于1的input,您需要在字符类之后加上+

 var regexp = /^[a-zA-Z0-9-_]+$/; var check = "checkme"; if (check.search(regexp) == -1) { alert('invalid'); } else { alert('valid'); } 

请注意, - (在这个例子中)和_都不需要转义。

如果您只对布尔值感兴趣,则不应使用String.match,而应使用 RegExp.prototype.test(即/abc/.test("abcd") )而不是String.search()。 你也需要像Andy E的回答中所说的那样重复你的angular色课堂:

 var regexp = /^[a-zA-Z0-9-_]+$/; 

得到了愚蠢的错误。 所以在这里发帖,如果有人觉得有用

  1. -\._ – 表示连字符,点和下划线
  2. \.-_ – 表示从点到下划线的所有符号

不要逃避下划线。 可能会造成一些w </s>。