2012-09-11 39 views
1

previous question的延续......测试在文本区域无效文本格式

后即任何包含[0-9A-Fa-f]以外的值的对)。

if(validFormat) { 
// do processing 
} 
else { 
// find invalid hex value pairs 
} 

什么是最有效的方式来获得不正确(无效)六角对的列表,以便我能够回报的错误及其相关的十六进制对。

编辑额外的问题

此外,我将如何去测试,以确保不存在“双重空间”的任何地方,因为这也构成了即使十六进制对可能是有效的格式无效。

谢谢!

+0

提示:'[^ 0-9A-Fa-f]' – Kash

回答

1

最简单的是找到所有的价值观和扫描那些无效:

var isHexPair = /^[0-9a-f]{2}$/i; 
var allPairs = myTextArea.value.split(/\s+/); 
var notHex = []; 
for (var i=allPairs.length;i--;){ 
    if (!isHexPair.test(allPairs[i])){ 
    notHex.push(allPairs(i)); 
    } 
} 

该正则表达式表示:

  • ^开始在字符串
  • [0-9a-f]发现的开端任何字符是数字或af
  • {2}找到其中的两个
  • $确保我们现在是在字符串
  • i结束,并使其不区分大小写(允许AF以及AF)

通过上述然后你可以这样做:

if (notHex.length){ 
    // There is at least one invalid entry 
}else{ 
    // all is well 
} 

编辑:如果你明确要测试该字符串中包含什么,但单字节十六进制字符串组合通道用一个空格ated,最简单的测试也只是:

if (/^([0-9a-f]{2})+[0-9a-f]{2}$/i.test(myStr)){ /* valid! */ } 
+0

正是我需要的,谢谢!你还可以看看我的编辑上面,并帮助我与双空间问题?谢谢! – Joey

+0

若要检查是否存在双倍空间,只需将if(myStr.indexOf('')!= - 1){...}';如果你想检查任何类型的多个空格(例如一个空格和一个制表符,或两个换行符),那么'if(/ \ s {2,} /。test(myStr)){/ * 2个或更多空格在行* /}' – Phrogz

0

参加一个var文本区域和存储的值,因为它们是空间分隔的做就可以了,你一个.splt(" ")(白色空间分割)最终会产生一对十六进制对。然后,只需遍历循环内的数组,将循环内容与上一个问题的正则表达式进行比较,并将无效对存储在新的var中,然后将其打印出来供用户使用。