• 正则系列之字符类



    字符类可以区分各种字符,例如区分字母和数字。

    1、.

    有下列含义之一:

    1. 匹配除行终止符之外的任何单个字符:\n(换行符)\r(回车符)\u2028(行分隔符)或者\u2029(段落分隔符)
    let reg = /.y/g;
    let str = "yes make my day";
    str.match(reg); // ['my', 'ay']
    
    • 1
    • 2
    • 3
    1. 在字符集内,点失去了它的特殊意义,并与文字点匹配。
    let reg = /\./g;
    let str = ".u";
    str.match(reg); // ['.']
    
    • 1
    • 2
    • 3

    注意m多行标志不会改变点的行为。因此,要匹配多行模式,可以使用字符类[^],它将匹配包括换行符在内的任何字符。

    let reg = /[^]/g;
    let str = ".u\n\r\u2028\u2029";
    str.match(reg); // ['.', 'u', '\n', '\r', '
    ', '
']
    
    • 1
    • 2
    • 3
    • 4

    ES2018 添加了 s“dotAll”标志,它允许点也匹配行终止符。

    let reg = /./g;
    let str = "yes make my day\n";
    str.match(reg); // ['y', 'e', 's', ' ', 'm', 'a', 'k', 'e', ' ', 'm', 'y', ' ', 'd', 'a', 'y']
    reg = /./gs;
    str.match(reg); // ['y', 'e', 's', ' ', 'm', 'a', 'k', 'e', ' ', 'm', 'y', ' ', 'd', 'a', 'y', '\n']
    
    • 1
    • 2
    • 3
    • 4
    • 5

    2、\d

    匹配任何数字(阿拉伯数字)。相当于 [0-9]

    let reg = /\d/g;
    let str = "B2is the suite number";
    str.match(reg); // ['2']
    
    • 1
    • 2
    • 3

    3、\D

    匹配任何非数字(阿拉伯数字)的字符。相当于[^0-9]

    let reg = /\D/g;
    let str = "B2is the suite number";
    str.match(reg); //  ['B', 'i', 's', ' ', 't', 'h', 'e', ' ', 's', 'u', 'i', 't', 'e', ' ', 'n', 'u', 'm', 'b', 'e', 'r']
    
    • 1
    • 2
    • 3

    4、\w

    匹配基本拉丁字母中的任何字母数字字符,包括下划线。相当于 [A-Za-z0-9_]

    let reg = /\w/g;
    let str = "B2is_the-suite number";
    str.match(reg); //  ['B', '2', 'i', 's', '_', 't', 'h', 'e', 's', 'u', 'i', 't', 'e', 'n', 'u', 'm', 'b', 'e', 'r']
    
    • 1
    • 2
    • 3

    5、\W

    匹配任何不是来自基本拉丁字母的单词字符。相当于 [^A-Za-z0-9_]

    let reg = /\W/g;
    let str = "B2is_the-suite number";
    str.match(reg); //  ['-', ' ']
    
    • 1
    • 2
    • 3

    6、\s

    匹配单个空白字符,包括空格、制表符、换页符、换行符和其他 Unicode 空格。相当于 [ \f\n\r\t\v\u00a0\u1680\u2000-\u200a\u2028\u2029\u202f\u205f\u3000\ufeff]

    let reg = /\s/g;
    let str = "B2is_the-suite number\f\n\r\t\v\u00a0\u1680\u2000\u200a\u2028\u2029\u202f\u205f\u3000\ufeff";
    str.match(reg);// [' ', '\f', '\n', '\r', '\t', '\v', ' ', ' ', ' ', ' ', '
    ', '', '', '', ' ', '']
    
    • 1
    • 2
    • 3
    • 4

    7、\S

    匹配除空格以外的单个字符。相当于[^ \f\n\r\t\v\u00a0\u1680\u2000-\u200a\u2028\u2029\u202f\u205f\u3000\ufeff]

    reg = /\S/g;
    str.match(reg); // ['B', '2', 'i', 's', '_', 't', 'h', 'e', '-', 's', 'u', 'i', 't', 'e', 'n', 'u', 'm', 'b', 'e', 'r']
    
    • 1
    • 2

    8、\t

    匹配水平制表符。

    let reg = /\t/g;
    let str = "B2is_the-suite number\f\n\r\t\v\u00a0\u1680\u2000\u200a\u2028\u2029\u202f\u205f\u3000\ufeff";
    str.match(reg); // ['\t']
    
    • 1
    • 2
    • 3

    9、\r

    匹配回车符。

    let reg = /\r/g;
    let str = "B2is_the-suite number\f\n\r\t\v\u00a0\u1680\u2000\u200a\u2028\u2029\u202f\u205f\u3000\ufeff";
    str.match(reg); // ['\r']
    
    • 1
    • 2
    • 3

    10、\n

    匹配换行符。

    let reg = /\n/g;
    let str = "B2is_the-suite number\f\n\r\t\v\u00a0\u1680\u2000\u200a\u2028\u2029\u202f\u205f\u3000\ufeff";
    str.match(reg); // ['\n']
    
    • 1
    • 2
    • 3

    11、\v

    匹配垂直制表符。

    let reg = /\v/g;
    let str = "B2is_the-suite number\f\n\r\t\v\u00a0\u1680\u2000\u200a\u2028\u2029\u202f\u205f\u3000\ufeff";
    str.match(reg); // ['\v']
    
    • 1
    • 2
    • 3

    12、\f

    匹配换页符。

    let reg = /\f/g;
    let str = "B2is_the-suite number\f\n\r\t\v\u00a0\u1680\u2000\u200a\u2028\u2029\u202f\u205f\u3000\ufeff";
    str.match(reg); // ['\f']
    
    • 1
    • 2
    • 3

    13、[\b]

    匹配退格键。

    14、\0

    匹配一个 NUL 字符。不要在此后面加上另一个数字。

    15、\cX

    使用插入符号匹配控制字符,其中“X”A–Z 中的一个字母(对应于代码点 U+0001–U+001F)。

    let reg = /\cM/g;
    let str = "\r\t";
    str.match(reg); // ['\r']
    
    • 1
    • 2
    • 3

    16、\xhh

    匹配与代码 hh(两个十六进制数字)对应的字符。

    17、\uhhhh

    匹配与值 hhhh(四个十六进制数字)对应的 UTF-16 代码单元。

    18、\u{hhhh}\u{hhhhh}

    (仅当设置了 u 标志时。)匹配与 UnicodeU+hhhhU+hhhhh(十六进制数字)对应的字符。

    19、\p{UnicodeProperty}\P{UnicodeProperty}

    根据字符的 Unicode 字符属性匹配字符(例如,仅匹配表情符号字符、日文片假名字符、中文汉字字符或日文汉字字符等)。

    20、\

    指示应特殊处理或“转义”后面的字符。它表现为两种方式之一。

    • 对于通常按字面处理的字符,表示下一个字符是特殊的,不能按字面解释。例如,/b/ 匹配字符“b”。通过在“b”前面放置反斜杠,即使用 /\b/,字符变得特殊以表示匹配单词边界。
    • 对于通常被特殊对待的字符,表示下一个字符不是特殊的,应该按字面意思解释。例如,“*”是一个特殊字符,表示应该匹配前面的字符出现 0次或多次;例如,/a*/ 示匹配 0 个或多个“a”。要从字面上匹配 * 需在其前面加上反斜杠;例如,/a\*/ 匹配“a*”

    后记

    如果你感觉文章不咋地//(ㄒoㄒ)//,就在评论处留言,作者继续改进;o_O???
    如果你觉得该文章有一点点用处,可以给作者点个赞;\\*^o^*//
    如果你想要和作者一起进步,可以微信扫描二维码,关注前端老L~~~///(^v^)\\\~~~
    谢谢各位读者们啦(^_^)∠※!!!

    在这里插入图片描述

  • 相关阅读:
    代码随想录训练营 股票03
    Java之接口
    2022谷粒商城学习笔记(五)文件上传功能
    Nginx的请求时间限制(如周一到周五可以访问)
    modbusRTU【codesys】
    什么是正向代理和反向代理
    SpringMVC 拦截器
    多线程06:条件变量
    Go线程实现模型-G
    关于Linux系统命令行操作
  • 原文地址:https://blog.csdn.net/weixin_62277266/article/details/125539010