正则表达式交替

摘要:在本教程中,您将学习 JavaScript 正则表达式交替,它是在正则表达式中的“或”运算符。

正则表达式交替介绍

正则表达式使用管道运算符 (|) 来表示交替,这就像正则表达式中的逻辑 OR 运算符。交替允许您匹配 A 或 B。

A | B

以下示例使用交替来匹配字符串 'JavaScript and JS' 中的 JavaScriptJS

const s = 'JavaScript and JS';
const pattern = /JavaScript|JS/g;
const match = s.match(pattern);

console.log(match);
Code language: JavaScript (javascript)

输出

[ 'JavaScript', 'JS' ]Code language: plaintext (plaintext)

正则表达式交替示例

以下示例说明了正则表达式交替的实际应用。

1) 使用正则表达式交替匹配 hh:mm 格式的时间字符串

以下正则表达式将 \d 字符集量词 {} 结合起来,以匹配格式为 hh:mm 的时间字符串。

/\d{2}:\d{2}/Code language: JavaScript (javascript)

在这个正则表达式中

  • \d{2} 匹配两个数字。
  • : 匹配冒号字符
  • \d{2} 匹配两个数字

但规则 \d{2} 也匹配无效的小时或分钟,例如 99。要使其更精确地匹配,您可以使用交替。

由于有效的小时范围为 0123,您可以使用以下模式来匹配小时部分。

[01]\d|2[0-3]Code language: JavaScript (javascript)

在这个模式中

  • 规则 [01] 匹配单个数字 0 或 1,规则 \d 匹配 0 到 9 之间的单个数字。因此,规则 [01]\d 匹配 00、01 到 19。
  • 字面量数字 2 匹配数字 2,规则 [0-3] 匹配 0 到 3 之间的单个数字,包括 0、1、2、3。因此,规则 2[0-3] 匹配两位数 20、21、22 和 23。

因此,规则 [01]\d|2[0-3] 匹配 00 到 23 之间的两位数。

同样,您可以使用以下规则匹配有效分钟,范围从 00 到 59。

[0-5]\dCode language: JavaScript (javascript)

以下正则表达式将这些规则结合起来,以匹配 hh:mm 格式的时间字符串。

/[01]\d|2[0-3]:[0-5]\d/gCode language: JavaScript (javascript)

但是,此正则表达式将无法按预期工作。例如

const time = '05:30 31:62 23:45 26:99';
const pattern = /[01]\d|2[0-3]:[0-5]\d/g;
const match = time.match(pattern);

console.log(match);Code language: JavaScript (javascript)

输出

[ '05', '23:45' ]Code language: JavaScript (javascript)

在这个示例中,正则表达式引擎将模式 [01]\d|2[0-3]:[0-5]\d 视为由交替分隔的两个部分。

[01]\d
OR
2[0-3]):([0-5]\d)Code language: Python (python)

要解决此问题,您可以使用括号将交替括起来。它表示仅包裹的部分是交替的,而不是整个模式。

([01]\d|2[0-3]):[0-5]\dCode language: JavaScript (javascript)

现在,脚本按预期工作。

const time = '05:30 31:62 23:45 26:99';
const pattern = /([01]\d|2[0-3]):[0-5]\d/g;
const match = time.match(pattern);

console.log(match);Code language: JavaScript (javascript)

输出

[ '05:30', '23:45' ]Code language: JavaScript (javascript)

总结

  • 交替 A | B 匹配 AB 之一。
  • 交替就像正则表达式中的 OR 运算符。
  • 使用括号 () 将您想要应用交替的部分括起来。
本教程对您有帮助吗?