2010-07-25 32 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