2012-08-03 40 views
2

我有一個數據字符串,它通常會像這樣讀取:「0010,0010,0030」。如果所有數字都不匹配,我需要通過設置警報來驗證該字符串。所以如果字符串看起來像這個「0010,0010,0010」那麼沒有問題,我的邏輯按計劃進行。但是如果它看起來像這樣:「0010,0010,0030」,那麼我需要提醒用戶他們選擇了不正確的操作(0010和0030是邏輯中的操作),並且他們必須重新選擇。有任何想法嗎?用於操作的Javascript字符串驗證

+0

檢查了這一點:http://jsfiddle.net/hrBTX/ – canon 2012-08-03 17:43:35

+0

這也非常有幫助謝謝佳能 – Deckard 2012-08-03 18:31:13

回答

1

只需在,上分割字符串,然後比較條目。

像下面這樣(我沒有測試這一點,但它的輪廓)

var input = "0010, 0010, 0010", 
    tokens = input.split(','), 
    result = true; 

for (var i = 0; i <= tokens.length - 1; i++) { 
    if (i <= tokens.length - 2) { 
     // get rid of whitespace 
     if (tokens[i].replace(/\s/g, '') !== tokens[i+1].replace(/\s/g, '')) result = false; 
    }  
} 

alert(result);​ 

Here is a fiddle.

+0

轉換爲數字將降至微不足道的數字(例如''0010''將成爲'10' ) – jbabey 2012-08-03 17:37:22

+0

@jbabey - 真的,你的評論幫助我簡單地這,thanx – hvgotcodes 2012-08-03 17:38:36

+0

這是完美的,我重新配置,以適應我的邏輯,它工作正常,非常感謝每個人 – Deckard 2012-08-03 18:09:16

0

試試這個:

var split="0010, 0010, 0030".split(", "); 
var ok = true; 
for (i = 0; i < split.length - 1; i++) 
{ 
    if (split[i] != split[i + 1]) 
    { 
     //reset_logic(); 
     ok = false; 
     break; 
    } 
} 
if (ok) 
{ 
    //all_good(); 
} 
0

我會建議定期表達:

// gives you an array with values "0010", "0010", and "0030" 
var matches = '0010, 0010, 0030'.match(/(\d+)/); 

然後只是循環比賽並將它們的鄰居進行比較。如果有任何不常見的,你有你的答案,所以打破循環。

var allMatch = true; 
for (var i = 1; i < matches.length; i++) { 
    if (matches[i-1] !== matches[i]) { 
     allMatch = false; 
     break; 
    } 
} 

if (allMatch) { 
    ... 
} else { 
    ... 
}