• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录

gino先森

  • 博客园
  • 联系
  • 订阅
  • 管理

公告

View Post

JavaScript学习笔记【DAY15(2020.9.4)周五】

 

正则表达式:正确的规则( Regular Expression )是用于匹配字符串中字符组合的模式。在JavaScript中,正则表达式也是对象。

正则表达式是专门针对字符串而定义出来。

它是一组规则 通过特定的字符来表示不同的字符串类型;是一个引用类型的对象

标识符:g(全局);i(忽略大小写);m(多行匹配)

 

正则表达式组成部分:/表达体/修饰符

                       表达体部分:基本字符和元字符组成

                                                         基本字符:就是平时使用的字符串中的字符

 

正则表达式的特点

1、灵活性、逻辑性和功能性非常的强。

2、可以迅速地用极简单的方式达到字符串的复杂控制。

3、对于刚接触的人来说,比较晦涩难懂。比如:^\w+([-+.]\w+)@\w+([-.]\w+).\w+([-.]\w+)*$

4、实际开发,一般都是直接复制写好的正则表达式. 但是要求会使用正则表达式并且根据实际情况修改正则表达式. 比如用户名: /^[a-z0-9_-]{3,16}$/

 

正则表达式的定义

1、构造函数定义 RegExp(正则表达式, 修饰符);

new RegExp("abc", “g”)

第一个参数是正则表达式的表达体

第二个参数是正则表达式的修饰符

2、字面量定义 /正则表达式/修饰符

/\d+/g

 

转义字符(元字符)

\d 所有的数字

\D 所有的非数字

\w 所有的数字字母下划线

\W 所有的非数字字母下划线

\s 所有的空白符

\S 所有的非空白符

特殊字符(元字符)

.    除了回车和换行之外的其它所有内容

()   分组 分组内是一个整体

[]   范围

[a-z]

[A-Z]

[0-9]

[0-9A-Za-z]

|    或者

[^]  范围取反

^    开头

$    结尾

量词符用来设定某个模式出现的次数

{}   数量  {正则里面表示数量的都是针对前面的一个字符(除非用小括号包裹)}

{10} 限定十个 不能多也不能少

{3,5} 最少三个 最多五个

{1,} 最少一个 最多无穷个

?   零个或一个

+    一个或任意个             等同于(1,)

*     零个或任意个(数量)   等同于(0,)

 

匹配规则:一个正则字符匹配一个字符串字符

 

正则表达式方法

test(str); //用于检测字符串是否符合正则表达式的描述

str 被检测的字符串

返回值 布尔值 为true时,表示该字符串通过正则验证,为false时,表示该字符串没有通过正则验证

 

exec(str);

str 被检测的字符串

返回值 数组

当检测到内容时,数组成员是符合正则表达式的字符串

input 属性是原字符串

index 属性是位于原字符串的下标数字

groups 属性是undefined(可忽略)

当检测不到内容时,为undefined

注:当正则表达式拥有g修饰符时,每一次调用exec方法都会从上一次的检测位置继续检测,而不是从头开始检测。

 


 

字符串方法

(1)replace(drop, add);

drop 被替换下的内容

可以是字符串

可以是正则表达式

add 被替换上的内容

可以是字符串

可以是函数

函数的返回值是被替换上的内容

函数的参数

第一个表示匹配到的内容

第二个表示匹配到的内容的索引

第三个表示原字符串

如果正则表达式中有圆括号,则圆括号的内容会一一对应放在第二个参数位置及后面位置 原来的第二个参数和第三个参数会向后推移

(2)match(searchvalue | regexp) 方法可在字符串内检索指定的值,或找到一个或多个正则表达式的匹配。

该方法类似 indexOf() 和 lastIndexOf(),但是它返回指定的值,而不是字符串的位置。

返回值存放匹配结果的数组。该数组的内容依赖于 regexp 是否具有全局标志 g。

 

如果 regexp 没有标志 g, 那么 match() 方法就只能在 stringObject 中执行一次匹配。如果没有找到任何匹配的文本, match() 将返回 null。否则,它将返回一个数组,其中存放了与它找到的匹配文本有关的信息。该数组的第 0 个元素存放的是匹配文本,而其余的元素存放的是与正则表达式的子表达式匹配的文本。除了这些常规的数组元素之外,返回的数组还含有两个对象属性。index 属性声明的是匹配文本的起始字符在 stringObject 中的位置,input 属性声明的是对 stringObject 的引用。

如果 regexp 具有标志 g,则 match() 方法将执行全局检索,找到 stringObject 中的所有匹配子字符串。若没有找到任何匹配的子串,则返回 null。如果找到了一个或多个匹配子串,则返回一个数组。不过全局匹配返回的数组的内容与前者大不相同,它的数组元素中存放的是 stringObject 中所有的匹配子串,而且也没有 index 属性或 input 属性。

(3)search(regexp) 方法用于检索字符串中指定的子字符串,或检索与正则表达式相匹配的子字符串。

regexp 该参数可以是需要在 stringObject 中检索的子串,也可以是需要检索的 RegExp 对象。

返回值 stringObject 中第一个与 regexp 相匹配的子串的起始位置。 如果没有匹配到则返回-1

注:search() 方法不执行全局匹配,它将忽略标志 g。该方法总是从字符串的开始进行检索。


 

posted on 2020-12-06 17:04  gino先森  阅读(51)  评论(0)    收藏  举报

刷新页面返回顶部
 
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3