C#中的正则表达式和js中的是否一样?

按照书上写的一个c#中正则表达式的验证:
string p = "^[0-9]*$";
Regex rx = new Regex(p);
return rx.IsMatch(s);
感觉和js中的正则表达式差不多,但我这本书上并没有对c#的正则表达式的一些详细说明,c#中的正则表达式和js中的使用方法一样吗?

正则表达式只是一个系统的概念,然后具体语言再对其实现。

其实两者是不同的。但是由于使用者的习惯,大部分的时间是相同的。

在js中正则表达式是一个类型。可以直接使用var s = /pattern/;这样的形式实现。所以说在js只直接是一种类型的。象用其他诸如字符串等类型一样使用他,只不过定界符不同。

而在C#本身是不存在的,直接使用的是一种类库中的一个类实现的。也就是说正则表达式其实只是类库中的一个类而已。然后对这个类定义有几个静态变量,变量,方法与函数等等,你只要知道他是一个类就可以了!

至于相同的部分那就是大部分的元字符表示法,比如^表示开始,$表示结尾等等,也就是说他们大部分相同的地方就是对于元数据的定义,\d等等,这样你在不同的语言中,虽然实现不同,但对于元数据却使用相同的东西,以便于你的记忆,不必到各种语言中都再去学习了。

不同的是对于表达式的限定及扩展不一样的。在js中你可以直接跟在后面实现,如:
var s = /pattern/igm;
后边的i表示忽略大小写,g表示全局,m表示多行。
但在C#中利用的是另一个参数,regexoptions,枚举型的,除了这些这外还有对编译等等,比js要多。而对于运算符如|选择?等都是一样的!也就是说,js中的写法在C#中一定能用,除模式限制部分,而在C#中的写法大部时间js也能用。

表达式还是要学习的,不是学的元数据表示,而是对于那个类语法的学习,比如在js中存在test方法,就是测试匹配,但不设置变量,而在C#中没有,有一个isMatch与之相同功能。不学习这些东西你怎么会知道呢?所以必须要学习的,而且顺便说一下C#上的正则表达式比js强多了,还有很多的东西是js正则表达式中所没有的,比如动态正则表达式,而在js中是不可能实现的。在C#中却可以实现。如果不学习,那么你的表达式也只能处于常用的基础上!

所以很不暂同一楼的观点。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-04-27
正则表达式的规则在所有语言里的使用都相同,这就是正则表达式,只是语法不同而已
第2个回答  2012-05-16
正则表达式可以说在任何语言里都通用的,共用一个祖先,是一项最伟大的发明
第3个回答  2012-04-27
同意 @kusirp21 的说法,具体你可以看看《精通正则表达式 第三版》,里面有详细讲解各种正则表达式引擎的实现区别

简而言之,javascript的正则表达式引擎没有.net提供的强大,.net\java\php都提供特别的功能是别的平台没有的。javascript正则表达式引擎还依赖于浏览器实现,不同的浏览器在底层实现上也不同,性能也不同
第4个回答  2012-04-27
一样的,所有语言的正则表达式都是一样的追问

那就是说我没必要重新学习C#的正则表达式了!

追答

都一样,还学什么呀,c#和java几乎相同,相信你要是会java的话,c#很快就能上手。

相似回答