2012-09-11 65 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中,然後將其打印出來供用戶使用。