2013-02-26 60 views
2

我有一個字符串形式的正則表達式,我想將該正則表達式綁定到我的網格單元格。這樣,現在該單元格中的值就針對該正則表達式進行了驗證。我正在使用RegExp JavaScript庫進行轉換和測試值。但它要麼每次返回false,要麼給我一個invalid regex,即使是最簡單的正則表達式。在javascript中使用正則表達式和測試值將字符串轉換爲正則表達式

這是我使用的方法:

addCellValidator(columnObj[0].name, new CellValidator({     
    isValid: function (value) { 
     var regex = new RegExp("/^[a-zA-Z\-]+$/"); 
     return value == "" || (regex.test(value)); 
    } 
})); 

是它的格式或RegExp需要特殊的圖案?

+0

你測試什麼值? – gmaliar 2013-02-26 12:46:57

+0

在這種情況下的特殊字符.. – faizanjehangir 2013-02-26 12:48:02

回答

3

你剛纔添加的//字符串,這個工程:

addCellValidator(columnObj[0].name, new CellValidator({ 
       isValid: function (value) { 
        var regex = new RegExp("^[a-zA-Z\-]+$"); 
        return value == "" || (regex.test(value)); } 
      })); 
6

雖然這是有效的JavaScript代碼:

new RegExp("/^[a-zA-Z\-]+$/") 

...它不會產生你認爲的正則表達式。這是相同的:

/\/^[a-zA-Z-]+$\// 

你必須:

  • 地帶定界符
  • 提取和分析flags,如果有的話,如:

    "/^[a-z-]+$/i" ---> new RegExp("^[a-z-]+$", "i") 
    

還有一點需要注意:轉義沒有意義帶反斜槓的。如果想在字符類中匹配一個文字-,則需要將其作爲第一個或最後一個項目。

+0

你的解釋幫助我意識到我沒有解析標誌,謝謝你有詳細的回覆=) – afreeland 2013-03-27 14:05:26

相關問題