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

Alphanumeric, dash and underscore but no spaces regular expression check JavaScript

本文关键字:空格 正则表达式 检查 JavaScript 下划线 数字 破折号      更新时间:2023-09-26

尝试根据正则表达式检查输入

字段应该只允许字母数字字符,破折号和下划线,不允许空格。

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

我错过了什么?

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

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

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

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

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

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

const regex = /^['w-]+$/;

你应该不要使用String。匹配,但RegExp.prototype.test(即/abc/.test("abcd"))而不是String.search(),如果你只对布尔值感兴趣。你还需要重复Andy E在回答中解释的角色类别:

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

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

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

试试这个

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

应该允许下划线和连字符

试试这个,它对我来说工作得很好。

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

不要转义下划线。