JavaScript RegExp – 概述
JavaScript RegExp,全称为Regular Expression,即正则表达式,在开发中是一个非常重要的概念。
正则表达式是描述字符串模式的一种语言,经常用于搜索、匹配、替换字符串中内容。JavaScript的正则表达式对象的语法是基于Perl语言的正则表达式语法的。
以下是一些基本概念:
- 字符表达式:匹配单个字符。
- 字符集合:匹配一组字符中的任意一个字符。
- 元字符:用于描述模式中特殊的字符,如+、*、.等。
- 捕获:用圆括号括起来的表达式,可以捕获匹配到的内容。
- 贪婪匹配:正则表达式默认是贪婪匹配,即尽可能多地匹配字符,可以使用?关键字取消贪婪匹配。
下面通过示例来更深入地理解正则表达式。
字符表达式
字符表达式用来匹配单个字符。
元字符
.
:匹配除回车、换行符之外的所有字符。
const regexp = /a.b/;
console.log(regexp.test('aab')); // true
console.log(regexp.test('a\nb')); // false
console.log(regexp.test('a\rb')); // false
字符集合
字符集合表示用中括号[]括起来的一组字符,可以匹配其中任意一个字符。
const regexp = /[aeiou]/;
console.log(regexp.test('apple')); // true
console.log(regexp.test('banana')); // false
转义字符
如果要匹配元字符本身,需要使用反斜杠\将其转义。
const regexp = /\./;
console.log(regexp.test('a.b')); // true
元字符
元字符是用来描述模式中特殊的字符。
*
匹配前一个字符0或多次。
const regexp = /go*d/;
console.log(regexp.test('god')); // true
console.log(regexp.test('good')); // true
console.log(regexp.test('goood')); // true
console.log(regexp.test('gd')); // false
+
匹配前一个字符1或多次。
const regexp = /go+d/;
console.log(regexp.test('god')); // false
console.log(regexp.test('good')); // true
console.log(regexp.test('goood')); // true
console.log(regexp.test('gd')); // false
?
匹配前一个字符0或1次。
const regexp = /go?d/;
console.log(regexp.test('god')); // true
console.log(regexp.test('good')); // true
console.log(regexp.test('go')); // false
console.log(regexp.test('gd')); // false
^
匹配开头位置。
const regexp = /^the/;
console.log(regexp.test('the cat')); // true
console.log(regexp.test('in the box')); // false
$
匹配结尾位置。
const regexp = /cat$/;
console.log(regexp.test('the cat')); // true
console.log(regexp.test('in the box')); // false
捕获
使用圆括号()将表达式括起来,可以捕获匹配到的内容。
const regexp = /(\d{4})-(\d{2})-(\d{2})/;
const match = regexp.exec('Today is 2022-02-02');
console.log(match[1]); // '2022'
console.log(match[2]); // '02'
console.log(match[3]); // '02'
贪婪匹配
正则表达式默认是贪婪匹配,即尽可能多地匹配字符。
const regexp = /a.+d/;
console.log(regexp.exec('abcded')); // ['abcde']
如果要取消贪婪匹配,可以在元字符后加上?。
const regexp = /a.+?d/;
console.log(regexp.exec('abcded')); // ['abcd']
结论
本文介绍了JavaScript中正则表达式的基本概念和使用方法,包括字符表达式、元字符、捕获和贪婪匹配。通过示例代码,更深入地理解了正则表达式是如何描述字符串模式的。在开发中,正则表达式是非常强大的工具,可以用于各种字符串操作,例如搜索、匹配、替换等。