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

Javascript 测试文本区域中的无效文本格式,javascript,regex,arrays,Javascript,Regex,Arrays,继续我的 测试文本格式后,如果不是正确的格式,我想找出哪些十六进制值对不正确(即任何包含[0-9A-Fa-f]以外的值的对) 获取不正确(无效)十六进制对列表的最有效方法是什么,以便我可以报告错误及其相关十六进制对 编辑其他问题 此外,我将如何进行测试以确保任何地方都没有“双空格”,因为即使十六进制对可能有效,这也会构成无效格式 谢谢 最简单的方法是查找所有值并扫描无效值: var isHexPair = /^[0-9a-f]{2}$/i; var allPairs = myTextArea.v

继续我的

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

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

编辑其他问题

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


谢谢

最简单的方法是查找所有值并扫描无效值:

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));
  }
}
regex说:

  • ^
    从字符串开头开始
  • [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! */ }

最简单的方法是查找所有值并扫描无效值:

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));
  }
}
regex说:

  • ^
    从字符串开头开始
  • [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! */ }

获取文本区域的值并存储在
var
中,因为它们是空格分隔的,所以在其上执行
.splt(“”
(在空白处拆分),您将得到一个十六进制对数组。然后,只需在循环中迭代数组,将其与上一个问题中的正则表达式进行比较,并将无效对存储在新的
var
中,然后将其打印给用户

获取文本区域的值并存储在
var
中,因为它们是空格分隔的,所以在其上执行
.splt(“”
(在空白处拆分),您将得到一个十六进制对数组。然后,只需在循环中迭代数组,将其与上一个问题中的正则表达式进行比较,并将无效对存储在新的
var
中,然后将其打印给用户

正是我需要的,谢谢!你也可以看看我上面的编辑,帮我解决双空格问题吗?谢谢要检查是否存在双空格,只需
if(myStr.indexOf(“”)!=-1){…}
;如果您想检查任何类型的多个空格(例如,一个空格和一个制表符,或两个换行符),那么
if(/\s{2,}/.test(myStr)){/*2或更多的空格在一行中*/}
正是我所需要的,谢谢!你也可以看看我上面的编辑,帮我解决双空格问题吗?谢谢要检查是否存在双空格,只需
if(myStr.indexOf(“”)!=-1){…}
;如果要检查任何类型的多个空格(例如,一个空格和一个制表符,或两个换行符),则
if(/\s{2,}/.test(myStr)){/*2或更多的空格在一行中*/}