JavaScript 正则表达式用法

JavaScript 是一种广泛应用于 Web 开发的编程语言,正则表达式(regular expression)是其中不可或缺的重要工具。使用正则表达式,可

JavaScript 是一种广泛应用于 Web 开发的编程语言,正则表达式(regular expression)是其中不可或缺的重要工具。使用正则表达式,可以实现字符串的匹配、替换、分割等操作,下面将介绍 JavaScript 中的正则表达式常用语法和用法示例。

正则表达式基础语法
正则表达式是一种字符模式,用于检查和匹配在字符串中某个位置或某些位置的字符。具体来说,它是由一些普通字符(例如字母、数字等)和一些特殊字符(例如 ‘*’、’.’、’\d’ 等)组成的序列。简单地说,一个正则表达式就是一堆字符和符号的组合,它代表着一种特殊的字符串模式。

在 JavaScript 中,我们可以通过 RegExp 对象来创建正则表达式。RegExp 对象有两种创建方式:字面量方式和构造函数方式。

字面量方式:使用两个斜杠(/)把正则表达式括起来。
let reg = /abc/;
console.log(reg.test('abc')); // true
console.log(reg.test('abC')); // false
JavaScript
构造函数方式:使用 RegExp 构造函数创建正则表达式。
let reg = new RegExp('abc');
console.log(reg.test('abc')); // true
console.log(reg.test('abC')); // false
JavaScript
基础匹配规则
接下来,我们介绍正则表达式中的基本匹配规则。

‘.’ 表示任何字符(除了换行符)。
let reg = /a.b/;
console.log(reg.test('aXb')); // true
console.log(reg.test('a\nb')); // false
JavaScript
‘\d’ 表示数字。
let reg = /\d/;
console.log(reg.test('a1b')); // true
console.log(reg.test('abc')); // false
JavaScript
‘\D’ 表示非数字。
let reg = /\D/;
console.log(reg.test('a1b')); // true
console.log(reg.test('12c')); // false
JavaScript
‘\w’ 表示任意字母数字和下划线。
let reg = /\w/;
console.log(reg.test('_abc')); // true
console.log(reg.test('*abc')); // false
JavaScript
‘\W’ 表示非字母数字和下划线。
let reg = /\W/;
console.log(reg.test('*abc')); // true
console.log(reg.test('_abc')); // false
JavaScript
‘\s’ 表示任意空白符(包括空格、制表符、换页符等)。
let reg = /\s/;
console.log(reg.test(' a')); // true
console.log(reg.test('a')); // false
JavaScript
‘\S’ 表示非空白符。
let reg = /\S/;
console.log(reg.test(' a')); // true
console.log(reg.test(' ')); // false
JavaScript
重复匹配
在某些情况下,需要对某些字符进行重复匹配,指定重复次数的方法有以下几种。


‘*’ 表示重复零次或多次。
let reg = /ab*c/;
console.log(reg.test('ac')); // true
console.log(reg.test('abc')); // true
console.log(reg.test('abbbc')); // true
JavaScript
‘+’ 表示重复一次或多次。
let reg = /ab+c/;
console.log(reg.test('abc')); // true
console.log(reg.test('ac')); // false
JavaScript
‘?’ 表示重复零次或一次。
let reg = /ab?c/;
console.log(reg.test('abc')); // true
console.log(reg.test('ac')); // true
console.log(reg.test('abbbc')); // false
JavaScript
‘{n,m}’ 表示重复 n 到 m次。
let reg = /ab{2,4}c/;
console.log(reg.test('abbc')); // true
console.log(reg.test('abbbc')); // true
console.log(reg.test('abbbbc')); // false
JavaScript
‘{n}’ 表示重复 n 次。
let reg = /ab{3}c/;
console.log(reg.test('abbc')); // false
console.log(reg.test('abbbc')); // true
console.log(reg.test('abbbbc')); // false
JavaScript
特殊匹配
除了上面提到的基础匹配规则和重复匹配之外,正则表达式还提供了一些特殊匹配的功能。

‘^’ 表示匹配字符串的开头。
let reg = /^abc/;
console.log(reg.test('abcdef')); // true
console.log(reg.test('ghabc')); // false
JavaScript
‘$’ 表示匹配字符串的结尾。
let reg = /abc$/;
console.log(reg.test('abcdef')); // false
console.log(reg.test('ghabc')); // true
JavaScript
‘|’ 表示逻辑或。
let reg = /ab|cd/;
console.log(reg.test('abcd')); // true
console.log(reg.test('acbd')); // false
JavaScript
‘()’ 表示分组匹配。
let reg = /(ab)+/;
console.log(reg.test('ab')); // true
console.log(reg.test('abab')); // true
console.log(reg.test('acab')); // false
JavaScript
正则表达式的方法
在 JavaScript 中,常用的 RegExp 对象方法有以下几个。

test()
test 方法用于测验匹配是否成功,它返回一个布尔值。如果匹配成功,则返回 true;否则返回 false。

let reg = /abc/;
console.log(reg.test('abc')); // true
console.log(reg.test('abC')); // false
JavaScript
exec()
exec 方法用于在字符串中查找与正则表达式匹配的第一个子串,如果没有找到匹配的子串,则返回 null。

let reg = /abc/;
console.log(reg.exec('aabbcc')); // null
console.log(reg.exec('abbbbbc')); // ['abc']
JavaScript
match()
match 方法用于在字符串中查找与正则表达式匹配的子串,如果没有找到匹配的子串,则返回 null。

let reg = /ab+c/;
console.log('abc abbc abbbc'.match(reg)); // ['abc', 'abbc', 'abbbc']
console.log('aabc'.match(reg)); // null
JavaScript
replace()
replace 方法用于替换字符串中与正则表达式匹配的子串,返回新的字符串。

let reg = /ab+c/;
console.log('abc abbc abbbc'.replace(reg, '*')); // '* * *'
console.log('aabc'.replace(reg, '*')); // 'aabc'
JavaScript
search()
search 方法用于在字符串中查找与正则表达式匹配的子串,返回第一个匹配的位置,如果没有匹配,则返回 -1。

let reg = /abc/;
console.log('aabbcc'.search(reg)); // -1
console.log('abbbbbc'.search(reg)); // 0
JavaScript
总结
本文介绍了 JavaScript 中正则表达式的基础语法和常用用法,包括基础匹配规则、重复匹配、特殊匹配和正则表达式的方法。正则表达式的用法可以极大地简化字符串的处理操作,精通正则表达式是每一位 JavaScript 程序员的必修课。