摘要:在本教程中,您将学习 JavaScript 正则表达式交替,它是在正则表达式中的“或”运算符。
正则表达式交替介绍
正则表达式使用管道运算符 (|) 来表示交替,这就像正则表达式中的逻辑 OR 运算符。交替允许您匹配 A 或 B。
A | B以下示例使用交替来匹配字符串 'JavaScript and JS' 中的 JavaScript 或 JS。
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。要使其更精确地匹配,您可以使用交替。
由于有效的小时范围为 01 到 23,您可以使用以下模式来匹配小时部分。
[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匹配A或B之一。 - 交替就像正则表达式中的 OR 运算符。
- 使用括号
()将您想要应用交替的部分括起来。
本教程对您有帮助吗?