这个正则表达式怎么理解?

  • 正则表达式通俗理解..些关于正则表达式和正则在线测试工具等的内容列表.

  • 正则表达式通俗解释...

  • 正则表达式的理解...

  • 正整数正则表达式理解...

  • 正则表达式常用符号理解...

  • 正则在线测试工具...

  • 正则表达式在线生成器...

  • 正则表达式语法大全...

  • 正则表达式在线测试...

  • 正则表达式生成器...

  • 正则表达式在线生成器...

  • 正则表达式语法大全...

  • 正则表达式在线测试...

  • 正则表达式生成器...

  • 正则表达式规则表...

  • 正则表达式 非贪婪...

  • 正则表达式生成器在线...

  • 正则表达式邮箱格式...

JavaScript是目前Web发领域非常流行的一种编程语言,得到众多IT从业人员和编程爱好者的关注。 本书是一本全面、深介绍JavaScript语言的学习指南。本书共分四个部分,第1部分帮助读者快速手,掌握基本的JavaScript编程要;第2部分介绍JavaScript的发展和技术背景;第3部分深探索JavaScript,介绍了语法、值、运算符、布尔类型、数字、字符串、语句、异常捕获、函数、变量、对象与继承、数组、正则表达式、Date、Math、JSON、标准全局变量、编码和JavaScript、ECMAScript 5的新特性等内容;第4部分介绍技巧、工具和类库,帮助读者更好地运用JavaScript行编程。 本书内容由浅深,非常适合想要快速学习JavaScript编程或者深钻研JavaScript的读者参考。 JavaScript是目前Web发领域非常流行的一种编程语言,得到众多IT从业人员和编程爱好者的关注。 本书是一本全面、深介绍JavaScript语言的学习指南。本书共分四个部分,第1部分帮助读者快速手,掌握基本的JavaScript编程要;第2部分介绍JavaScript的发展和技术背景;第3部分深探索JavaScript,介绍了语法、值、运算符、布尔类型、数字、字符串、语句、异常捕获、函数、变量、对象与继承、数组、正则表达式、Date、Math、JSON、标准全局变量、编码和JavaScript、ECMAScript 5的新特性等内容;第4部分介绍技巧、工具和类库,帮助读者更好地运用JavaScript行编程。 本书内容由浅深,非常适合想要快速学习JavaScript编程或者深钻研JavaScript的读者参考。

1.3.2 复合赋值运算符

1.3.3 标识符与变量名

1.5.2 二元逻辑运算符

1.10.1 函数声明的提升特性

1.13 变量作用域和闭包

1.13.1 变量是函数作用域的

1.13.4 IIFE模式:引入一个新的作用域

1.14 对象和构造函数

1.14.5 构造函数:对象工厂

1.18 标准库的其他功能

3.1 古怪和非官方特性

7.4 控制流语句和块

7.5 使用分号的规则

7.5.1 以块结束的语句后面没有分号

7.7 数字字面量的方法调用

7.8.2 严格模式:建议与注意事项

7.8.3 严格模式中,变量必须被声明

7.8.4 严格模式下的函数

7.8.5 严格模式中,设置或者删除不可改变的属性会抛出异常

7.8.6 严格模式中的不合格标识符不能删除

7.8.8 严格模式中禁用的特性

8.1.3 静态类型与动态类型

8.1.4 静态类型检查和动态类型检查

8.4 原始值的包装对象

8.4.1 包装对象不同于原始值

8.4.2 原始值的包装与去包装

8.4.3 原始值从包装器借调方法

8.5.2 转换成布尔值、数字、字符串和对象的函数

9.3.2 普通(宽松)相等(==,!=)

9.3.3 没有针对==的有效用例

9.5 加号运算符(+)

9.6 布尔运算符和数字运算符

9.8.2 instanceof:检测对象是否是给定构造函数的实例

10.1 转换成布尔值

10.1.1 手动转换为布尔值

10.3 等号运算符、排序运算符

11.1.2 在字面量上调用方法

11.3 特殊的数字值

11.4 数字的内部表示

11.5 处理舍入错误

11.6.2 将整型表示为浮点数字

11.7.3 通过位运算符得到32位整数

11.9.4 位运算移位操作符

11.13 用于数字的函数

12.1 字符串字面量

12.2 字符串字面量中的转义字符

12.4 转换为字符串

12.6.1 合并:加号(+)运算符

12.6.2 合并:拼接字符串数组

12.8 字符串构造器方法

12.10 字符串原型方法

12.10.3 字符串的检索和比较

12.10.4 支持正则表达式的方法

13.1 声明和变量赋值

13.2 循环语句和条件语句的主体

14.1 什么是异常捕获

14.5 实现一个自己的异常构造器

15.2 术语:“形参”和“实参”

15.6 哪个更好,函数声明还是函数表达式

15.8 参数缺失或者超出时的处理

15.8.2 强制性参数,限制参数数量的最小值

15.8.4 模拟参数的引用传递

15.8.5 陷阱:非预期的可选参数

15.9.1 具名参数可作为描述信息

第16章 变量:作用域、环境和闭包

16.2 背景知识:静态性和动态性

16.3 背景知识:变量的作用域

16.4 变量以函数为作用域

16.5 变量声明的提前

16.6.2 IIFE变体:预内置表达式上下文

16.7.1 最佳实践:避免创建全局变量

16.7.2 模块系统可以减少全局变量的引入

16.9 环境:变量的管理

16.10 闭包:使得函数可以维持其创建时所在的作用域

16.10.1 通过环境来控制闭包

16.10.2 陷阱:不经意间的环境共用

17.1 第1层:单一对象

17.1.3 点运算符(.):通过固定键值访问属性

17.1.5 中括号操作符([]):通过计算出的键访问属性

17.2 把任意值转化为对象

17.3 this作为函数和方法的隐式参数

17.3.2 “用于构造函数的apply()”详细阐述了如何配合构造函数使用apply()

17.3.5 缺陷:方法中的函数会掩盖this

17.4 第2层:对象间的原型关系

17.4.3 通过原型在对象间共享数据

17.4.6 设置和删除仅影响自有属性

17.5 遍历和检测属性

17.5.1 列出自有的属性键

17.5.2 列出所有的属性键

17.5.3 检测属性是否存在

17.6 最佳实践:遍历自有属性

17.7.1 通过对象字面量定义访问器

17.7.2 通过属性描述符定义访问器

17.8 属性特性和属性描述符

17.8.3 通过描述符获取和定义属性

17.8.5 属性:定义与赋值

17.8.6 继承的只读属性不能被赋值

17.8.7 枚举性:最佳实践

17.9.4 缺陷:保护是浅层的

17.10 第3层:构造函数——实例工厂

17.10.5 实现构造函数的小技巧

17.11 原型属性中的数据

17.11.1 对于实例属性,避免使用带初始值的原型属性

17.11.2 避免非多态的原型属性

17.12 保持数据私有性

17.12.1 构造函数环境中的私有数据(Crockford私有模式)

17.12.2 使用标记的键的属性保存私有数据

17.12.3 使用具体化键的属性保存私有数据

17.13 第4层:构造函数之间的继承

17.13.6 避免硬编码父构造函数的名字

17.13.7 示例:构造函数继承

17.13.8 示例:内建构造函数的继承层次结构

17.13.9 反模式:原型是父构造函数的实例

17.14 所有对象的方法

17.15 泛型方法:借用原型方法

17.15.2 调用泛型方法的例子

17.15.3 类似数组的对象和泛型方法

17.16.1 缺陷1:继承影响读取属性

17.16.2 缺陷2:覆写会影响调用方法

17.16.4 字典模式:没有原型的对象更适合用作映射

17.17 备忘录:对象的使用

18.1.1 数组是映射,不是元组

18.1.2 数组也可以具有属性

18.4.1 手动增加数组的长度

18.5 数组中的“空缺”

18.5.2 稀疏数组和密集数组

18.5.3 哪些操作会忽略空缺,而哪些不会

18.5.4 移除数组中的空缺

18.6 数组构造函数

18.7 数组原型方法

18.8 添加和删除元素(破坏性地)

18.9 排序和颠倒元素顺序(破坏性地)

18.10 合并、切分和连接(非破坏性地)

18.11 值的查找(非破坏性地)

18.12 迭代(非破坏性地)

18.13 缺陷:类数组对象

18.14 最佳实践:遍历数组

19.1 正则表达式语法

19.3 创建正则表达式

19.3.1 字面量与构造函数

19.3.3 正则表达式的实例属性

19.3.4 几个创建正则表达式的例子

19.6.1 首次匹配(不设置标识/g)

19.6.2 全部匹配(设置标识/g)

19.10.2 陷阱:缺少断言(例如^、$)的正则表达式可以在任意位置匹配

19.10.3 匹配一切或什么都不匹配

19.11 正则表达式备忘单

20.3.3 将日期转换成字符串

20.4 日期和时间格式

20.4.1 日期格式(无时间)

20.4.2 时间格式(无日期)

20.5 时间值:从开始的毫秒数

22.4 通过节点访问函数转换数据

第23章 标准全局变量

23.3 非构造器函数

23.3.1 文字的编码和解码

23.3.2 数值归类与数值转换

23.6 名称空间和特殊值

24.6.2 通过转义引用星际平面的字符

24.7.1 匹配任意的码元以及任意的码位

24.7.3 推荐阅读的章节资源

25.3 标准库的新功能

25.4 兼容旧浏览器的小贴士

第4部分 技巧、工具和类库

第26章 元编程风格指南

26.1 现有风格指南

26.2.1 代码应该具有一致性

26.2.2 代码应该易于理解

26.3 普遍认可的最佳实践

26.3.2 推荐字面量而不是构造函数

26.4 具有争议的规则

第27章 调试的语言机制

第28章 子类化内置构造函数

28.2 障碍1:具有内部属性的实例

28.3 障碍2:内置的构造函数不能作为方法调用

28.4 另一种解决方案:委托

29.3 文档记录函数和方法

29.4 行内类型信息(“行内文档注释”)

29.5 文档记录变量、参数和实例属性

29.6.1 通过构造函数定义类

29.6.2 通过对象字面量定义类

29.7 其他有用的标签

30.2 四个语言类库

30.3.2 它是怎么样的标准呢

30.3.3 我们可以用它做什么

第31章 模块系统和包管理器

31.3 简单粗暴的模块实现


\b 是正则表达式规定的一个特殊代码(好吧,某些人叫它元字符,metacharacter),代表着单词的开头或结尾,也就是单词的分界处。虽然通常英文的单词是由空格,标点符号或者换行来分隔的,但是 \b 并不匹配这些单词分隔字符中的任何一个,它只匹配一个位置。

如果需要更精确的说法,\b 匹配这样的位置:它的前一个字符和后一个字符不全是(一个是,一个不是或不存在) \w。

很多人不怎么理解正则中的 \b 含义,看到上面一段话后,很多人还是不怎么理解 \b 究竟是怎样的一个“位置”。

今天就来说说我的理解。

'I' 占一个位置,'t' 占一个位置,所有的单个字符(包括不可见的空白字符)都会占一个位置,这样的位置我给它取个名字叫“显式位置”。

注意:字符与字符之间还有一个位置,例如 'I' 和 't' 之间就有一个位置(没有任何东西),这样的位置我给它取个名字叫“隐式位置”。

“隐式位置”就是 \b 的关键!通俗的理解,\b 就是“隐式位置”。

此时,再来理解一下这句话:

如果需要更精确的说法,\b 匹配这样的位置:它的前一个字符和后一个字符不全是(一个是,一个不是或不存在) \w。

我用我的话来翻译一下这句话:

“隐式位置” \b,匹配这样的位置:它的前一个“显式位置”字符和后一个“显式位置”字符不全是 \w。

此刻,有没有一种豁然开朗的感觉?有么有?有么有?有么有?

分析:第一个 \b 前面一个字符是空格,后面一个字符是 'n',不全是 \w,所以可以匹配出 'n' 是一个单词的开头。第二个 \b 前面一个字符是 'e',后面一个字符是空格,不全是 \w,可以匹配出 'e' 是一个单词的结尾。所以,合在一起,就能匹配出以 'n' 开头以 'e' 结尾的单词,这里就能匹配出 "nice" 这个单词。

分析:我见过有人类似于这样来写正则,想要达到的目的是匹配出上一个单词以 'a' 结尾,下一个单词以 'n' 开头的部分,这里想匹配出 "a nice"。但是这个正则表达的可不是这个目的,\b 前面是字符 'a',后面是字符 'n',两个都是“显式字符”,显然违背了 \b 的含义,所以这就是个错误的表达式,匹配不出任何东西。想要匹配出 "a nice",正确的正则写法是:a\b.\bnice(不能换行)

我要回帖

更多关于 正则表达式什么意思 的文章

 

随机推荐