尝试检查正则表达式的输入.
该字段应仅允许使用字母数字字符,破折号和下划线,并且不应允许空格.
但是,下面的代码允许使用空格.
我错过了什么?
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)
Gra*_*ies 14
这是我能找到的用于此检查的正则表达式的最简洁的语法:
const regex = /^[\w-]+$/;
Run Code Online (Sandbox Code Playgroud)