【发布时间】:2020-12-11 12:12:08
【问题描述】:
我正在尝试使用正则表达式获取以下条件逻辑。
if (text starts with +61) {
if (text after +61 is 1800) {
// then match 6 digits after 1800. So, the regex until here should be +611800 and then 6 digits
} else {
// match 9 digits after +61
}
}
我阅读了如何编写条件正则表达式。但是,我被以下正则表达式困在这里
^\+61((?=1800)\d{6}|\d{9})$
上面的正则表达式失败了,但它必须成功
- +611800123456(这一定是成功的)
以下文本通过了正则表达式测试,但它必须失败
- +61180012345(一定是失败)
这是我在正则表达式站点中的测试。
【问题讨论】:
-
只用
^\+61(?:1800\d{6}|\d{9})$,(?=1800)\d{6}表示与\d{6}匹配的前四位必须是1800 -
@WiktorStribiżew 我试过了。它匹配 +61180012345。这必须失败,因为 1800 之后只有 5 个数字
-
然后使用
^\+61(?:1800\d{6}|(?!1800)\d{9})$。由于 JS 正则表达式中没有条件构造,因此您只需要在替代开始时使用前瞻来否定特定模式。 -
谢谢大家。有效。你能解释一下吗?!在答案中。我可以标记为答案
-
@WiktorStribiżew 如果需要,可以发布。
标签: javascript regex