永发信息网

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

答案:6  悬赏:30  手机版
解决时间 2021-01-27 13:10
按照书上写的一个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#中却可以实现。如果不学习,那么你的表达式也只能处于常用的基础上!

所以很不暂同一楼的观点。
全部回答
一样的,所有语言的正则表达式都是一样的
正则表达式的规则在所有语言里的使用都相同,这就是正则表达式,只是语法不同而已
正则表达式是一样的,但怎么使用是不一样的,语法你得看看。
同意 @kusirp21 的说法,具体你可以看看《精通正则表达式 第三版》,里面有详细讲解各种正则表达式引擎的实现区别 简而言之,javascript的正则表达式引擎没有.net提供的强大,.net\java\php都提供特别的功能是别的平台没有的。javascript正则表达式引擎还依赖于浏览器实现,不同的浏览器在底层实现上也不同,性能也不同
正则表达式可以说在任何语言里都通用的,共用一个祖先,是一项最伟大的发明
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
如果是亲舅死了外甥在一个月内可以到别家串门
永吉汽车销售服务有限公司地址在哪,我要去那
壅隔的意思是什么啊?知道的请说下!
怎样解释癌症有家族史的人发病高
【氮气有毒吗】下列气体有毒的是( )A.煤气(主
霜是______现象;冬天,从人口中呼出的“白气
厦门哪里有成人散打学校
老九门里跟张艺兴搭戏的女演员是谁?
24h自助银行服务(厚坝镇龙王井街117号24h自助
矿区废弃地对生态系统的负面影响不包括CA. 造
早秫酒的意思是什么啊?知道的请说下!
客服组长工作细则怎么写
美国女王纪念币价值
农村信用社南门分社(明河东街)地址在什么地方
万里汽车销售公司地址好找么,我有些事要过去
推荐资讯
临时变压器消户需要提供什么材料给佚电部门
6Club地址在什么地方,我要处理点事
我的电脑唱歌电容麦插手机上怎么没声音?
力美健身会所地址在哪,我要去那里办事
奇台县哈佛h5的4s店的位置
恨惋的意思是什么啊?知道的请说下!
百度一下小孩受寒引起的呕吐怎么办
今天 t243从秦皇岛到哈尔滨的火车晚点70分钟,
舞阳汽车地址在哪,我要去那里办事
济南历下交警大队六中队地圵
菏泽到银川自驾车怎么走
慕思酒吧地址有知道的么?有点事想过去
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?