尝试根据正则表达式检查输入。
字段应该只允许字母数字字符、破折号和下划线,不应该允许空格。
但是,下面的代码允许使用空格。
我错过了什么?
var regexp = /^[a-zA-Z0-9\-\_]$/; var check = "checkme"; if (check.search(regexp) == -1) { alert('invalid'); } else { alert('valid'); }
Don't escape the underscore. Might be causing some whackness.
不,不是的。但是,它将只匹配长度为1的输入。对于长度大于或等于1的输入,在字符类之后需要一个 +:
+
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 在答案中解释的那样:
/abc/.test("abcd")
var regexp = /^[a-zA-Z0-9-_]+$/;
犯了个愚蠢的错误,如果有人觉得有用,请在这里发帖
[-\._]
这是我能找到的用于此检查的正则表达式的最简洁的语法:
const regex = /^[\w-]+$/;
试试这个
"[A-Za-z0-9_-]+"
应该允许下划线和连字符
试试这个,对我很有效。
"^([a-zA-Z])[a-zA-Z0-9-_]*$"