2012-08-03 44 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 { 
    ... 
}