字母数字,短划线和下划线但没有空格正则表达式检查JavaScript

时间:2011-05-04 17:50:34

标签: javascript regex

尝试检查正则表达式的输入。

该字段应仅允许使用字母数字字符,破折号和下划线,并且不应允许空格。

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

我错过了什么?

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

7 个答案:

答案 0 :(得分:121)

  

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

不,它没有。但是,它只会在长度为1的输入上匹配。对于长度大于或等于1的输入,在字符类后面需要+

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

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

答案 1 :(得分:14)

如果你只对布尔值感兴趣,你应该不使用String.match 而是使用RegExp.prototype.test(即/abc/.test("abcd"))而不是String.search() 。您还需要重复您的角色类,如Andy E的答案所述:

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

答案 2 :(得分:3)

有愚蠢的错误。所以发帖在这里,如果有人发现它有用

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

答案 3 :(得分:2)

此语法比已发布到此点的答案更简洁,并获得相同的结果:

let regex = /^[\w-]+$/;

答案 4 :(得分:1)

不要逃避下划线。可能会造成一些打击。

答案 5 :(得分:0)

尝试一下

"[A-Za-z0-9_-]+"

应使用下划线和连字符

答案 6 :(得分:0)

尝试一下,对我来说很好。

"^([a-zA-Z])[a-zA-Z0-9-_]*$"