首页 > 代码库 > JavaScript基础正则表达式的字面声明(012)
JavaScript基础正则表达式的字面声明(012)
不出所料,正则表达式也是JavaScript的一种对象。构造正则表达式也有两种,一种是使用JavaScript内置的 new RegExp() 构造函数,另一种是我们推荐的字面声明方式:
// regular expression literalvar re = /\\/gm;// constructorvar re = new RegExp("\\\\", "gm");
可以看出字面声明法(Literal)更简洁,由于不必加引号,所以不用象构造函数里的参数那样需要用两个\来表示斜杠。
使用字面声明法来创建正则表达式时,后面的字母代表以下含义:
- g—全局匹配
- m—多行
- i—大小写敏感
匹配和模式(pattern)加上后面的设置字母就组成了正则表达式的字面声明:
许多字符串的处理函数,如String.prototype.replace(),都接受正则表达式的字面声明作为参数:
var no_letters = "abc123XYZ".replace(/[a-z]/gi, "");console.log(no_letters); // 123
另外一个使用字面声明和构造函数生成正则表达式的区别是,当这个正则表达式对象被函数作为返回值时,字面声明总是保证相同的对象被返回,则构造函数返回的是内容相同的但个体不同的对象。考虑下面的代码:
function getRE() {var re = /[a-z]/;re.foo = "bar";return re;}var reg = getRE(),re2 = getRE();console.log(reg === re2); // truereg.foo = "baz";console.log(re2.foo); // "baz"
如果把var re = /[a-z]/;这里换作new RegExp(),那么console.log(reg === re2);将返回false。
JavaScript基础正则表达式的字面声明(012)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。