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

Tom*_*Tom 78 javascript regex

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

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

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

我错过了什么?

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

And*_*y E 130

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

不,它没有.但是,它只会在长度为1的输入上匹配.对于长度大于或等于1的输入,您需要+跟随字符类:

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

请注意,既不-(在这种情况下)也不_需要转义.


sap*_*pht 15

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

var regexp = /^[a-zA-Z0-9-_]+$/;
Run Code Online (Sandbox Code Playgroud)

  • 实际上,如果你只对布尔值感兴趣,你应该使用`RegExp.prototype.test`方法. (8认同)

Gra*_*ies 14

这是我能找到的用于此检查的正则表达式的最简洁的语法:

const regex = /^[\w-]+$/;
Run Code Online (Sandbox Code Playgroud)


Aka*_*ppa 7

尝试这个

"[A-Za-z0-9_-]+"
Run Code Online (Sandbox Code Playgroud)

应该允许下划线和连字符

  • 你的解决方案帮助了我。谢谢! (3认同)

Iva*_*nov 5

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

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