在Nodejs中使用正则表达式停止流程

时间:2016-05-25 18:52:59

标签: javascript regex node.js

我正在尝试另一个问题的正则表达式:Regex which accepts alphanumerics only, except for one hyphen in the middle

我将此代码作为验证用户名的一部分:

...
var re = /^(?:[a-z0-9]{6,20}|(?=.{10,21}$)[a-z0-9]+-[a-z0-9]+)$/i;
var found = username.match(re).length;
...

但流程在此处停止,如果用户名无效,则不会继续超过此点。我需要能够问:

if(username fails regex) {
  send error back to client
}

1 个答案:

答案 0 :(得分:1)

str.match(regex)的问题是,如果找不到匹配项,它将返回null,请考虑以下事项:

console.log('hello'.match(/world/)); // null

.length读取null将引发TypeError。

你应该尝试使用regex.test(str)来返回一个布尔值:

var re = /^(?:[a-z0-9]{6,20}|(?=.{10,21}$)[a-z0-9]+-[a-z0-9]+)$/i;
var found = re.test(username); // true or false