正则表达式中两种定义方式中的反斜杠

正则表达式有两种定义方式,一种是使用双正斜杠将正则表达式的式子括起来,例如 var re1 = /^\d$/ ;一种是使用创建正则表达式对象的方式,这种情况下正则表达式作为一个字符串,用双引号包裹,例如 var re1 = new RegExp(“^\\d$”)。从这两种示例中可以看出虽然表达同样的意思,但是使用的正则表达式却有一些区别,区别之处就在反斜杠的使用。

反斜杠代表转义字符,用在所有字符串中,正则表达式作为一种超级字符串,和字符串一样遵循转义字符的条件,点在正则表达式中代表任意字符的匹配,以点为例讨论反斜杠在正则表达式中定义时的使用。

在第一种定义方式中,讨论   /23\\.34/  和   /23\.34/  的区别,代码如下。结论:在这种定义方式下不能用双反斜杠,否则会将转义字符转义为一个普通字符反斜杠。

正则表达式中两种定义方式中的反斜杠

 

在第二种定义方式中,讨论 new RegExp("23\.34") 、new RegExp("23.34")   和  new RegExp("23\\.34")的区别,代码如下。结论:在这种定义方式下由于是将正则表达式放在字符串中,因此若想让点成为一个普通点,因此需要使用双反斜杠。

 正则表达式中两种定义方式中的反斜杠

 

 核心之处在于反斜杠适用在所有字符串中,正则表达式作为超级字符串同样适用,而在进行匹配、测试等情况时,免不了要同时使用正则表达式和字符串,要注意理清自己的思路。

 

上一篇:字符串转日期格式并按自己要求格化式日期


下一篇:grep 学习笔记