2010-07-25 61 views
2

我們都熟悉R中的命名約定(如果不是:Venables & Smith - Introduction to R,Chapter 1.8)。另一方面,正則表達式仍然是terra incognita以及迄今爲止我的編程生涯中最討厭的部分......最近,我正式啓動了JavaScript重演,並且我試圖創建精確的RegExp來檢查正確的R對象名稱。JavaScript RegExp:R命名約定

簡要介紹: 對象名稱必須與.或更低/大寫字母開頭,如果他們開始與.不能用數字......後來,字母數字符號被允許與.繼續強調_

長話短說,這裏是我的JS代碼:

var txt = "._."; 
var inc = /^\.(?!\d)|^[a-z\.]/i; 

document.write(inc.test(txt)); 

這種方法管理的第一部分(.和/或小寫/大寫和.後的數字),但我無法通過類似& [\w\.]。我可以編寫一個可以處理這個問題的函數,但是可以用一個RegExp來管理這個函數嗎?

回答

2

我不熟悉的R或它的命名慣例,但我給它一個鏡頭:

如果你只是想驗證該名稱正確開始,所有你需要做的從字符類中刪除\.,留下:/^\.(?!\d)|^[a-z]/i。否則,.可能仍然是第一個字符,對其餘字符沒有限制。

如果你想驗證這整個名稱是正確的,這樣的事情應該工作:

/^(?:\.(?!\d)|[a-z])[a-z0-9_\.]+$/i 
+0

好極了!只需添加,正確的RegExp是'/ ^(?:\。(?!\ d)| [az])[a-z0-9 _ \。] * $/i',因爲'.'本身就是一個正確的對象名字,雖然沒有多大用處! – aL3xa 2010-07-26 09:15:53