正则表达式扩展

1.RegExp构造函数

es5写法:

var regex = new RegExp('xyz', 'i');
// 等价于
var regex = /xyz/i;


var regex = new RegExp(/xyz/i);
// 等价于
var regex = /xyz/i;

es6写法:

var regex = new RegExp(/xyz/, 'i');

2.字符串的正则方法

字符串对象共有 4 个方法,可以使用正则表达式:match()replace()search()split()。

ES6 将这 4 个方法,在语言内部全部调用RegExp的实例方法,从而做到所有与正则相关的方法,全都定义在RegExp对象上。

String.prototype.match 调用 RegExp.prototype[Symbol.match]
String.prototype.replace 调用 RegExp.prototype[Symbol.replace]
String.prototype.search 调用 RegExp.prototype[Symbol.search]
String.prototype.split 调用 RegExp.prototype[Symbol.split]

3.后行断言

es5先行断言:

先行断言:x(?=y)(x只有在y前面匹配)
/\d+(?=%)/.exec('100% of US presidents have been male') // ["100"] 先行否定断言:/x(?!y)/(x只有不在y前面才能匹配) /\d+(?!%)/.exec('that’s all 44 of them') // ["44"]

es6后行断言:

后行断言:/(?<=y)x/    只匹配美元符号之后的数字,要写成/(?<=\$)\d+/

后行否定断言:/(?<!y)x/ 比如,只匹配不在美元符号后面的数字,要写成/(?<!\$)\d+/

/(?<=\$)\d+/.exec('Benjamin Franklin is on the $100 bill')  // ["100"]

/(?<!\$)\d+/.exec('it’s is worth about €90')                // ["90"]

下面的例子是使用后行断言进行字符串替换。

const reg= /(?<=\$)foo/g;
'$foo %foo foo'.replace(reg, 'bar');
// '$bar %foo foo'

上面代码中,只有在美元符号后面的foo才会被替换。

猜你喜欢

转载自www.cnblogs.com/MJ-MY/p/9009929.html