永发信息网

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

答案:6  悬赏:30  手机版
解决时间 2021-01-27 13:10
  • 提问者网友:温柔港
  • 2021-01-26 22:07
按照书上写的一个c#中正则表达式的验证:
string p = "^[0-9]*$";
Regex rx = new Regex(p);
return rx.IsMatch(s);
感觉和js中的正则表达式差不多,但我这本书上并没有对c#的正则表达式的一些详细说明,c#中的正则表达式和js中的使用方法一样吗?
最佳答案
  • 五星知识达人网友:行路难
  • 2021-01-26 23:32
正则表达式只是一个系统的概念,然后具体语言再对其实现。

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

在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楼网友:七十二街
  • 2021-01-27 04:31
一样的,所有语言的正则表达式都是一样的
  • 2楼网友:时间的尘埃
  • 2021-01-27 02:54
正则表达式的规则在所有语言里的使用都相同,这就是正则表达式,只是语法不同而已
  • 3楼网友:梦中风几里
  • 2021-01-27 02:35
正则表达式是一样的,但怎么使用是不一样的,语法你得看看。
  • 4楼网友:躲不过心动
  • 2021-01-27 01:33
同意 @kusirp21 的说法,具体你可以看看《精通正则表达式 第三版》,里面有详细讲解各种正则表达式引擎的实现区别 简而言之,javascript的正则表达式引擎没有.net提供的强大,.net\java\php都提供特别的功能是别的平台没有的。javascript正则表达式引擎还依赖于浏览器实现,不同的浏览器在底层实现上也不同,性能也不同
  • 5楼网友:蕴藏春秋
  • 2021-01-27 00:56
正则表达式可以说在任何语言里都通用的,共用一个祖先,是一项最伟大的发明
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯