2016-05-25 15 views
1

我從另一個問題正則表達式嘗試:停止流動這裏中使用的NodeJS正則表達式停止流動

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

但:Regex which accepts alphanumerics only, except for one hyphen in the middle

我有這樣的代碼爲我的用戶名的驗證的一部分並且如果用戶名無效,則不會繼續超過此點。我需要能夠問:

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

這是一個驗證處理?它不應該透明地做這項工作嗎?或者,如果match()返回true,否則返回false。 – sln

+0

是的,這是一個驗證處理程序 – tommyd456

+0

我不知道如何使用正則表達式構造條件。如果有人添加一個答案,我可以放棄它。 – tommyd456

回答

1

str.match(regex)的問題是,它會返回null如果沒有找到匹配,可以這樣考慮:

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

而且閱讀.lengthnull會拋出一個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 
相關問題