📜  正则表达式 - Javascript (1)

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

正则表达式 - Javascript

正则表达式是一种强大的工具,用于在文本中匹配模式。它在很多领域都得到广泛应用,如文本处理,数据验证和爬虫等。在Javascript中,正则表达式也得到了很好的支持,下面将介绍Javascript中的正则表达式的基础知识和常用操作。

基本语法

Javascript中使用正则表达式,需要用RegExp对象,或使用正则表达式字面量定义。例如:

// 使用RegExp对象
var reg = new RegExp('abc');

// 使用正则表达式字面量
var reg = /abc/;

其中,abc是要匹配的模式。

匹配

调用RegExp对象的test()方法可以检查一个字符串是否匹配一个正则表达式。例如:

var reg = /abc/;
console.log(reg.test('abc'));   // true
console.log(reg.test('def'));   // false

在上述代码中,test()方法会返回一个布尔值,表明以字符串传入的参数是否与正则表达式/abc/匹配。

模式标记

使用正则表达式字面量时,可以加上一些模式标记(flags),以完成更多的操作。常用的模式标记如下:

  • g:全局匹配模式;即一次匹配所有符合条件的结果,而不是在找到第一个匹配前停止。
  • i:忽略大小写。
  • m:多行匹配模式。

将多个模式标记组合使用,例如:

var reg = /abc/gim;

则表示该正则表达式是全局匹配模式、忽略大小写、多行匹配模式。

元字符

在正则表达式中,有些字符有特殊含义,称为元字符。如下所示:

  • . :匹配任意字符,除了换行符。
  • ^ :匹配以什么开头。
  • $ :匹配以什么结尾。
  • * :匹配前面的表达式0次或多次。
  • + :匹配前面的表达式1次或多次。
  • ? :匹配前面的表达式0次或1次。
  • | :或操作,匹配左边或右边的表达式。
  • {n} :匹配前面的表达式n次。
  • {n,} :匹配前面的表达式n次或多次。
  • {n,m} :匹配前面的表达式n次到m次。
  • [] :匹配括号内任意一个字符。
  • [^] :匹配括号内非指定字符。
  • () :记住匹配的文本,以便在后面引用。

例如,使用.*可以匹配任意字符:

var reg = /a.*c/g;
console.log(reg.test('abc'));   // true
console.log(reg.test('abbc'));  // true
console.log(reg.test('ac'));    // true
console.log(reg.test('abd'));   // false

在上述代码中,正则表达式/a.*c/g可以匹配任意一个以a开头,以c结尾,并且它们之间可以是0个或多个任意字符的字符串。

字符类

在正则表达式中,使用[]可以匹配一组字符中的任意一个。例如,想匹配所有的元音字母可以使用[aeiou]

var reg = /[aeiou]/g;
console.log(reg.test('a'));     // true
console.log(reg.test('e'));     // true
console.log(reg.test('f'));     // false

在上述代码中,正则表达式/[aeiou]/g可以匹配任意一个字母,只要它是元音字母。

贪婪模式

默认情况下,正则表达式会尽可能多地匹配字符。例如,想使用正则表达式匹配字符串中的abc

var reg = /abc/;
console.log(reg.exec('abcdabc'));   // ["abc"]

在上述代码中,使用exec()方法返回匹配的结果。由于abc可以匹配,在字符串abcdabc中有两个abc,但是只返回了一个。

正则表达式的这种行为称为贪婪模式。如果要取消贪婪模式,则需要在元字符后面加上?。例如,改为非贪婪模式:

var reg = /abc?/;
console.log(reg.exec('abcdabc'));   // ["ab"]

在上述代码中,使用了?来取消元字符c的贪婪模式,因此只匹配到了ab

替换

正则表达式还可以用于替换字符串中的某些内容,可以使用replace()方法。例如,将字符串中的所有空格替换为|

var str = 'hello world';
var reg = /\s/g;
console.log(str.replace(reg, '|'));    // "hello|world"

在上述代码中,使用了正则表达式/\s/g来匹配字符串中的所有空格。使用replace()方法,用|替换所匹配的内容。

总结

正则表达式在Javascript中应用广泛,掌握基础知识是必不可少的。本文介绍了Javascript中正则表达式的语法、模式标记、元字符、字符类、贪婪模式和替换等常用操作。希望可以对大家学习Javascript有所帮助。