摘要:在本教程中,您将学习 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]\d
Code language: JavaScript (javascript)
以下正则表达式将这些规则结合起来,以匹配 hh:mm
格式的时间字符串。
/[01]\d|2[0-3]:[0-5]\d/g
Code 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]\d
Code 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 运算符。
- 使用括号
()
将您想要应用交替的部分括起来。
本教程对您有帮助吗?