JS-正则表达式

7次阅读
没有评论

共计 2081 个字符,预计需要花费 6 分钟才能阅读完成。

正则表达式简介

  • 正则表达式(Regular Expression)是用于匹配字符串中字符组合的模式
  • 在 JavaScript 中,正则表达式也是对象
  • 通常用来查找、替换哪些符合正则表达式的文本,许多语言都支持正则表达式

使用场景

  • 例如验证表单:用户名表单只能输入英文字母、数字或者下划线,昵称输入框可以输入中文(匹配
  • 比如用户名:/^[A-Za-z0-9_-]{3,16}$/
  • 过滤掉页面内容的一些敏感词(替换),或从字符串中获取我们想要的特点部分(提取)等

正则表达式语法

定义正则表达式:

    // 通过调用 RegExp 对象的构造函数创建
    let 变量名 = new RegExp(/表达式/)
    // 是正则表达式的字面量
    let 变量名 = /表达式/

判断是否有符合规则的字符串:

test() 方法用来查看正则表达式与指定的字符串是否匹配

    变量名.test(被检测的字符串)
    regexObj.text(str)
    // regexObj:是写到正则表达式
    // str:是要测试的文本

如果正则表达式与指定的字符串匹配,返回 true,否则 false

检索(查找)复合规范的字符串:

exec() 方法在一个指定字符串中执行一个搜索匹配

    变量名.exec(被检测的字符串)

如果匹配成功,exec()方法返回一个数组,否则返回 null

元字符

边界符(表示位置,开头的结尾,必须用什么开头,用什么结尾)

正则表达式中的边界符(位置符)用来提示字符所处的位置,主要有两个字符

边界符 说明
^ 表示匹配行首的文本(以谁开始)
$ 表示匹配行尾的文本(以谁结束)

如果 ^$ 在一起,表示必须是精确匹配

量词(表示重复次数)

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

量词 说明
* 重复零次或多次
+ 重复一次或多次
? 重复零次或一次
{n} 重复n次
{n,} 重复n次或更多次
{n,m} 重复n到m次

逗号左右两侧千万不要出现空格

字符类

1.[ ] 匹配字符集合

使用连字符 - 表示一个范围

  • [a-z] 表示 a到z 26个英文字母都可以
  • [a-zA-Z] 表示26个英文字母大小写都可以
  • [0-9] 表示 0~9 的数字都可以

[ ] 里面加上 ^ 取反符号 要写到中括号里面

[^a-z] 匹配除了小写字母以外的字符

. 匹配除换行符之外的任何单个字符

预定类 说明
\d 匹配 0-9 之间的任一数字,相当于 [0-9]
\D 匹配所以 0-9 以外的字符,相当于 [^0-9]
\w 匹配任意的字母、数字和下划线,相当于 [a-zA-Z0-9_]
\W 除所以字母、数字和下划线,相当于 [^a-zA-Z0-9_]
\s 匹配空格(包括换行符、制表符、空格等),相当于 [\t\r\n\v\f]
\S 匹配非空格的字符,相当于 [^\t\r\n\v\f]

日期格式:^\d{4}-\d{1,2}-\d{1,2}

修饰符

修饰符约束正则执行的某些细节行为,如:区分大小写、是否支持多行匹配等

    /表达式/[switch]

switch(也称修饰符)按照什么样的模式来匹配,有三种值:

  1. g:全局匹配 是单词global的缩写,匹配所有满足正则表达式的结果
  2. i:忽略大小写 是单词ignore的缩写,正则匹配时字母不区分大小写
  3. gi:全局匹配 + 忽略大小写
    console.log(/a/i.test('a')) //true
    console.log(/a/i.test('A')) //true

替换 replace

reeplace() 方法可以实现替换字符串操作,用来替换的参数可以是一个字符或者是一个正则表达式

    stringObject.replace(regexp/substr, replacement)
    字符串.replace(/正则表达式/,'替换的文本')
    // 全局匹配替换
    字符串.replace(/正则表达式/g,'替换的文本')
    // 全局匹配替换,多个
    字符串.replace(/正则表达式|正则表达式/g,'替换的文本')
  1. regexp/substr:被替换的字符串或者正则表达式
  2. replacement:替换为的字符
  3. 返回值:是一个替换完毕的新字符串

中文用户名正则

    /^[\u4e00-\u9fa5]{2,8}$/

总结

实例 描述
[Pp]thon 匹配 “Python” 或 “python”
rub[ye] 匹配 “ruby” 或 “rube”
[abcdef] 匹配中括号内的任意一个字母
[0-9] 匹配任何数字。类似于 [0123456789]
[a-z] 匹配任何小写字母
[A-Z] 匹配任何大写字母
[a-zA-Z0-9] 匹配任何字母及数字
[^au] 除了 au 字母以外的所有字符
[^0-9] 匹配除了 数字 外的字符
实例 描述
. 匹配除 “\n” 之外的任何单个字符。要匹配包括 ‘\n’ 在内的任何字符,请使用象 [.\n] 的模式
? 匹配一个字符 零次 或 一次,另一个作用是非贪婪模式
+ 匹配 一次 或 多次
* 匹配 零次 或 多次
\b 匹配一个长度为 0 的子串
\d 匹配一个数字字符。等价于 [0-9]
\D 匹配一个非数字字符。等价于 [^0-9]
\s 匹配任何空白字符,包括空格、制表符、换页符等等。等价于 [\f\n\r\t\v]
\S 匹配任何非空白字符。等价于 [^\f\n\r\t\v]
\w 匹配包括下划线的任何单词字符。等价于 [A-Za-z0-9_]
\W 匹配任何非单词字符。等价于 [^A-Za-z0-9_]

正文完
 0
qiaofugui.cn
版权声明:本站原创文章,由 qiaofugui.cn 于2024-05-20发表,共计2081字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(没有评论)
验证码