尝试根据正则表达式检查输入
字段应该只允许字母数字字符,破折号和下划线,不允许空格。
但是,下面的代码允许空格
我错过了什么?
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-_]+$/;
出现愚蠢的错误。所以,如果有人觉得有用,请在这里发帖
-
[-._]
-表示连字符、点和下划线 -
[.-_]
-表示从点到下划线范围内的所有符号
试试这个
"[A-Za-z0-9_-]+"
应该允许下划线和连字符
试试这个,它对我来说工作得很好。
"^([a-zA-Z])[a-zA-Z0-9-_]*$"
不要转义下划线。