2014-04-17 31 views
0

好的,我還有一個REGEX問題給大家。REGEX只匹配有效EXCEL COLUMNS(A-XFD)

我有一個有多個驗證步驟的字段。第一步是確保它不是空白的,第二步是確保只輸入1到3個大寫字母,第三步是確保它不包含「[」(在此處的左括號將表示函數場景,我們跳過驗證)。所有這些工作。現在,我必須確保輸入的值只是一個有效的Excel列參考。有效的Excel列可以是字母A - XFD。

我目前正在使用:

if (checkValue !==""){ //check for not blank 
    if ((checkValue.match(/^[A-Z]{1,3}$/) === null) && (functionCheck === false) && (validateColumnRange(rangeFrom))) { //check for only 1 - 3 alpha chars & run function check (function looks for "["), and run function check to validate column range 

    //do A - XFD validation here 

    } 
} 

任何進一步的方向將非常感激,因爲我已經通過正則表達式TUTS數小時現在很失落。

我已獲得在過去類似的問題,我可憐的企圖仿效這是隨後提供的功能是幫助如下:

function validateColumnRange(valueRange) { 
    if (typeof valueRange !== "string" || !valueRange.length) 
     return false; 
    var startIndex = valueRange.search(/[\d+]/); 
    var column = valueRange.substring(0, startIndex).toUpperCase(); 
    return (column >= "A" && column <= "XFD"); 
} 

它不工作...請幫助

+0

如果你檢查輸入只有3個字母,爲什麼還檢查沒有任何'['? – Robin

+0

A - XFD有效,但方括號中包含的功能也是有效的,所以 [startColumn]也是有效的條目。 –

+0

這裏是驗證規則的完整列表: 校驗值必須: 不能爲空, 可以包含在[]功能, 如果沒有一個功能:只能包含大寫ALPHA和 必須是有效的Excel列REFERENCE(字母A-XFD) –

回答

2

既然你已經確定的價值爲1-3字母,怎麼樣:

(column.length < 3 || column <= "XFD") 

有2個或更少的字母的任意值應該是可以接受的,而對於次的情況下,稀土字母,字母比較就足夠了。

+0

我實際使用: if(valueCheck>「XFD」) fieldFailed = true; –

+1

我認爲長度檢查可能還是必要的,除非我誤解了你,因爲「Z」>「XFD」,按字母順序。 – femtoRgon

+0

真棒抓住@femtoRgon,如果可以的話,我會給你額外的選票,你在發佈前就抓住了,LOL。並且爲了記錄,你是對的,用我的邏輯,「Z」失敗了,因爲「Z」>「XFD」就像你說的那樣。現在,它工作正常,並且「Z」通過。 –