测试文本区域中的无效文本格式

时间:2012-09-11 17:28:23

标签: javascript regex arrays

我的previous question ...

的延续

在测试文本格式后,如果格式不正确,我想弄清楚哪些十六进制值对是不正确的(即任何包含[0-9A-Fa-f]以外的值的对) )。

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

获取错误(无效)十六进制对列表的最有效方法是什么,以便我可以报告错误及其相关的十六进制对。

修改其他问题

此外,我将如何进行测试以确保在任何地方都没有“双倍空间”,因为即使十六进制对可能有效,也会构成无效格式。

谢谢!

2 个答案:

答案 0 :(得分: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]找到任何数字或a-f
  • 的字符
  • {2}正好找到其中两个
  • $确保我们现在位于字符串的末尾
  • i并使其不区分大小写(允许A-F以及a-f)

通过上述内容,您可以执行以下操作:

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

编辑:如果您明确要测试字符串只包含由单个空格分隔的单字节十六进制字符串,那么最简单的测试就是:

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

答案 1 :(得分:0)

获取文本区域的值并存储在var中,因为它们是空格分隔的,在其上执行.splt(" ")(在空白处分割),最终会得到一对十六进制数组。然后迭代遍历循环内部的数组与上一个问题中的正则表达式,并将无效对存储在新的var中并将其打印给用户。