首页 > 网站 > WEB开发 > 正文

JavaScript Patterns 3.6 Regular Expression Literal

2024-04-27 14:23:13
字体:
来源:转载
供稿:网友

javaScript Patterns 3.6 Regular ExPRession Literal

2014-06-02 12:08 by 小郝(Kaibo Hao), ... 阅读, ... 评论, 收藏, 编辑

1. Using the new RegExp() constructor

// constructorvar re = new RegExp("////", "gm");

2. Using the regular expression literal

// regular expression literalvar 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

  1. 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.
  2. And one last note that calling RegExp() without new(as a function, not as a constructor) behaves the same as with new.

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表