gpt4 book ai didi

Javascript 条件正则表达式 if-then-else

转载 作者:可可西里 更新时间:2023-11-01 02:19:18 25 4
gpt4 key购买 nike

我试图将条目限制为特定格式。

如果条目有 5500 或 5100,例如 01\01-5500-000-00 那么我想要这个:

^[0-9]{2,}\\[0-9]{2}\-[0-9]{4}\-[0-9]{3}\-$

但是如果条目有 5500 或 5100 以外的任何东西,我想要这个:

^[0-9]{2,}\\[0-9]{2}\-[0-9]{4}\-[0-9]{3}\-[0-9]{2}$

如何使用 if then else 想法来实现这一点?

最佳答案

JavaScript 正则表达式引擎不支持条件正则表达式语法,但它可以通过包含 2 个替代项的非捕获组解决:

  1. 具有积极的前瞻性和

  2. 第二个具有反向的、负面的前瞻性。

此正则表达式符合您的条件并且与 JavaScript 兼容:

^(?:(?=.*\b5[15]00\b)[0-9]{2,}\\[0-9]{2}-[0-9]{4}-[0-9]{3}-|(?!.*\b5[15]00\b)[0-9]{2,}\\[0-9]{2}-[0-9]{4}-[0-9]{3}-[0-9]{2})$

参见 regex demo

让我分解一下:

  • ^ - 字符串的开始
  • (?:
    • (?=.*\b5[15]00\b)[0-9]{2,}\\[0-9]{2}-[0-9]{4}-[ 0-9]{3}- - 需要整个单词 5500 的 (?=.*\b5[15]00\b) 前瞻的第一个替代方案5100 在字符串中,以及您拥有的第一个模式
    • | - 交替运算符
    • (?!.*\b5[15]00\b)[0-9]{2,}\\[0-9]{2}-[0-9]{4}-[ 0-9]{3}-[0-9]{2}) - 以 (?!.*\b5[15]00\b) 为前缀的第二个备选方案否定前瞻,确保字符串中没有 51005500,然后才匹配您的第二个模式。
  • $ - 字符串结尾。

关于Javascript 条件正则表达式 if-then-else,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32852857/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com