首页 > 代码库 > JavaScript Patterns 3.6 Regular Expression Literal
JavaScript Patterns 3.6 Regular Expression Literal
1. Using the new RegExp() constructor
// constructor var re = new RegExp("\\\\", "gm");
2. Using the regular expression literal
// regular expression literal var re = /\\/gm;
when using the RegExp()constructor, you also need to escape quotes and often you need to double-escape backslashes, as shown in the preceding snippet.
Regular Expression Literal Syntax
? g—Global matching
? m—Multiline
? i—Case-insensitive matching
var no_letters = "abc123XYZ".replace(/[a-z]/gi, ""); console.log(no_letters); // 123
Another distinction between the regular expression literal and the constructor is that the literal creates an object only once during parse time.
function getRE() { var re = /[a-z]/; re.foo = "bar"; return re; } var reg = getRE(), re2 = getRE(); console.log(reg === re2); // true
// Kaibo(20140602): For now this result should be false in ES5(Tested in Chrome) reg.foo = "baz"; console.log(re2.foo); // "baz"
Note
- This behavior has changed in ES5 and the literal also creates new objects. The behavior has also been corrected in many browser environments, so it’s not to be relied on.
- And one last note that calling RegExp() without new(as a function, not as a constructor) behaves the same as with new.
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。