📜  js 正则表达式 - Javascript (1)

📅  最后修改于: 2023-12-03 15:02:24.696000             🧑  作者: Mango

JS 正则表达式 - Javascript

JavaScript 正则表达式是一种独特的文本处理方式,用于在文本中匹配或搜索特定的模式。JavaScript 正则表达式是由字面量或者 RegExp 对象表示的。它可以用于字符串的搜索、替换以及字符串的验证等操作。本文将为你介绍常见的 JavaScript 正则表达式用法。

创建正则表达式
  1. 使用字面量创建正则表达式

    const regex = /pattern/;
    

    或者

    const regex = new RegExp('pattern');
    
  2. 使用正则表达式修饰符

    字面量和 RegExp 构造器两种方式都可以使用正则表达式修饰符,例如:

    const regex1 = /pattern/i; //不区分大小写
    const regex2 = new RegExp('pattern', 'i'); //不区分大小写
    const regex3 = /pattern/g; //全局匹配
    const regex4 = new RegExp('pattern', 'g'); //全局匹配
    
正则表达式匹配
  1. RegExp.test()

    test() 方法返回一个布尔值,表示目标字符串是否匹配正则表达式的模式。例如:

    const regex = /hello/;
    console.log(regex.test('hello world')); //true
    console.log(regex.test('hi world')); //false
    
  2. String.match()

    match() 方法会在字符串中查找与正则表达式匹配的内容,并返回一个数组,包含所有匹配的子串。例如:

    const regex = /hello/;
    const str = 'hello world';
    console.log(str.match(regex)); //["hello"]
    
正则表达式替换
  1. String.replace()

    replace() 方法用一个字符串或函数替换与正则表达式匹配的子串。例如:

    const regex = /hello/;
    const str = 'hello world';
    console.log(str.replace(regex, 'hi')); //"hi world"
    
正则表达式标志
  1. i

    i 标志表示不区分大小写。例如:

    const regex = /hello/i;
    console.log(regex.test('HELLO world')); //true
    
  2. g

    g 标志表示全局匹配。例如:

    const regex = /hello/g;
    const str = 'hello hello world';
    console.log(str.match(regex)); //["hello", "hello"]
    
  3. m

    m 标志表示多行匹配。例如:

    const regex = /^hello/m;
    const str = 'hello\nworld';
    console.log(regex.test(str)); //true
    
正则表达式字符集
  1. []

    [] 表示一个字符集,匹配其中任意一个字符。例如:

    const regex = /[abc]/;
    console.log(regex.test('a')); //true
    console.log(regex.test('d')); //false
    

    a-z 表示匹配从 az 之间任意一个字符。例如:

    const regex = /[a-z]/;
    console.log(regex.test('a')); //true
    console.log(regex.test('A')); //false
    
  2. ^

    ^ 表示否定,匹配字符集中除了指定字符以外的任意一个字符。例如:

    const regex = /[^0-9]/;
    console.log(regex.test('a')); //true
    console.log(regex.test('7')); //false
    
正则表达式限定符

    * 表示匹配前面字符或子表达式 0 次或多次。例如:

    const regex = /a*/;
    console.log(regex.test('')); //true
    console.log(regex.test('aaa')); //true
    console.log(regex.test('bcd')); //false
    

    + 表示匹配前面字符或子表达式 1 次或多次。例如:

    const regex = /a+/;
    console.log(regex.test('')); //false
    console.log(regex.test('aaa')); //true
    console.log(regex.test('bcd')); //false
    
  1. ?

    ? 表示匹配前面字符或子表达式 0 次或 1 次。例如:

    const regex = /a?/;
    console.log(regex.test('')); //true
    console.log(regex.test('a')); //true
    console.log(regex.test('bcd')); //false
    
  2. {}

    {n} 表示匹配前面字符或子表达式 n 次。例如:

    const regex = /a{3}/;
    console.log(regex.test('')); //false
    console.log(regex.test('aaa')); //true
    console.log(regex.test('aa')); //false
    

    {n,} 表示匹配前面字符或子表达式至少 n 次。例如:

    const regex = /a{3,}/;
    console.log(regex.test('')); //false
    console.log(regex.test('aaa')); //true
    console.log(regex.test('aa')); //false
    

    {n,m} 表示匹配前面字符或子表达式至少 n 次,至多 m 次。例如:

    const regex = /a{3,5}/;
    console.log(regex.test('')); //false
    console.log(regex.test('aaa')); //true
    console.log(regex.test('aaaaa')); //true
    console.log(regex.test('a')); //false
    
结论

JavaScript 正则表达式是一种强大的文本处理工具。本文介绍了它的基本语法、匹配、替换以及常见的字符集和限定符。在实际开发中,适当地运用正则表达式可以提高代码的处理效率和质量。