ES项目学习笔记(四)正则的扩展

RegExp构造函数

写正则时基本上都是直接以//定义了,不看还差点忘了有个构造函数RegExp,这个构造参数有两种用法,一种是直接传入正则表达式,一种是传入两个字符串参数的,es6中扩展多了一种传参情况。

{
    //es5之前3种相同的定义一个正则的方式
    let regex_old = /xyz/i;
    let regex_old1 = new RegExp(/xyz/i);    
    let regex_old2 = new RegExp('xyz','i');

    //es6 在传入一个正则表达式还可以传入一个参数表示修饰符,会覆盖正则表达式中的修饰符
    let regex_new = new RegExp(/xyz/ig,'i');
    console.log(new RegExp(/xyz/ig).flags); //gi
    console.log(new RegExp(/xyz/ig,'i').flags); //i
}

u 修饰符

扩展该修饰符主要是用来正确处理大于\uFFFF的 Unicode 字符。用以更正以下正则表达式的行为:

  • 点字符

点(.)字符不能识别码点大于0xFFFF的Unicode字符,必须加上u修饰符。

let s = '𠮷';
点(.)字符在正则表达式中,含义是除了换行符以外的任意单个字符
{
    console.log('大于0xFFFF的Unicode字符',/^.$/.test(s)); // false
    console.log('使用u字符',/^.$/u.test(s)); // true
}
  • Unicode 字符表示

es6使用{}表示一個 Unicode 字符,如果在正则中使用必须要加上u修饰符,否则会被解读为量词
{
console.log(/\u{61}/.test('a')); // false
console.log(/\u{61}/u.test('a')); // true
console.log(/\u{20BB7}/u.test('𠮷')); // true
}

  • 量词

使用u修饰符后,所有量词都会正确识别大于码点大于0xFFFF的Unicode字符。

{
    console.log('量词',/a{2}/.test('aa')); // true
    console.log('量词',/a{2}/u.test('aa')); // true
    console.log('量词',/𠮷{2}/.test('𠮷𠮷')); // false
    console.log('量词',/𠮷{2}/u.test('𠮷𠮷')); // true
}
  • 预定义模式

\S匹配所有非空白字符。

{
    /^\S$/.test('𠮷') // false
    /^\S$/u.test('𠮷') // true
}
  • i 修饰符

\u004B与\u212A都是大写的K。不加u修饰符,就无法识别非规范的K字符。

/[a-z]/i.test('\u212A') // false
/[a-z]/iu.test('\u212A') // true
  • 转义

没有u修饰符的情况下,正则中没有定义的转义(如逗号的转义,)无效,而在u模式会报错。

/\,/ // /\,/
/\,/u // 报错

y 修饰符

let s = 'bbbb_bbb_bb_b';
var a1 = /b+/g;
var a2 = /b+/y;

console.log(a1.exec(s), a2.exec(s)); // ["bbbb"],["bbbb"]
console.log(a1.exec(s), a2.exec(s)); // ["bbb"],null

console.log(a1.sticky, a2.sticky); //表示是否开启了粘连模式

在看这一部分内容时发现对正则的掌握程度真的很差,导致很多内容都都是新的,待后面对正则再进行系统的学习后,再补充。先记录到此。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 我是一个善变的人,很多事情会有很多想法,不知道怎样才能改掉这个毛病,马上三十岁了,我想做个全新的自己,就必须要改变!
    v雪姑娘阅读 1,288评论 0 0
  • 简单爱,全能福,让你随心所欲的扫福!2019年1月29日书写,祝愿每一个看到饱满福的人福气旺旺!
    止儿徐子阅读 5,320评论 15 42
  • 压缩文件的用途与技术 压缩文件使文件大小减低,降低磁盘使用量。还可以分成数个小型文件,方便携带。常用于网络数据传输...
    taosilly阅读 5,302评论 0 1

友情链接更多精彩内容