2013-12-09 220 views
0

這裏只有一個場景失敗,那就是不接受validate函數中的字母數字值。我的另一個場景很好。請看下面的代碼。如何驗證字符串和字母數字值?

jsfiddle

function validateChunk(s) 
{ 
    return !!s.match(/^[a-z]+(?:\(\d+\))?$/); 
} 

function filterValid(v) 
{ 
    return !v; 
} 

function testCases(str) 
{ 
    var chunks = str.split(","); 
    var validated = chunks.map(validateChunk); 
    return (0 === validated.filter(filterValid).length); 

} 

實際輸出:

"stack1(1),flow3test(7),over1,temp5"; - false 

預期輸出:

"stack1(1),flow3test(7),over1,temp5"; - true 

回答

2

你的正則表達式不允許位之前(,但所有的測試數據在那裏有數字。如果要允許數字,請將其更改爲/^[a-z0-9]+(?:\(\d+\))?$/

Updated Fiddle

如果你想允許數字,但不能在第一位置(一個相當普遍的限制),然後/^[a-z][a-z0-9]*(?:\(\d+\))?$/

Updated Fiddle

+0

謝謝,良好的漁獲物。 – user2848031

相關問題