gpt4 book ai didi

javascript - 如何结合正负正则表达式?

转载 作者:行者123 更新时间:2023-11-27 22:47:46 43 4
gpt4 key购买 nike

我认为可以定义一个 RegExp 字符串来检查两件事 - 用户是否没有尝试输入邮政信箱以及用户是否仅使用有效字符。两个单独的正则表达式如下:

邮政信箱验证:

^((?!^.*(\b[Pp]([Oo0][Ss][Tt])?\.*\s*[Oo0]([Ff][Ff]([Ii][Cc][Ee])?)?\.*\s*([Bb][Oo0][Xx])\d*\s*\b.*)).)*$

用户只能输入这些字符:

^[a-z|A-Z|0-9 _&'/#]*$

当我尝试简单地将两个正则表达式与垂直“OR”字符“|”连接在一起时,它没有达到预期的结果。这可能吗?单个正则表达式可以实现这两种验证吗?

最佳答案

如果您使用自己的正则表达式进行组合,您应该注意到第一个正则表达式实际上是一种具有一种格式不良的调和贪婪标记的模式。

看来你想要类似的东西

/^(?!.*\b[Pp]([Oo0][Ss][Tt])?\.*\s*[Oo0]([Ff][Ff]([Ii][Cc][Ee])?)?\.*\s*([Bb][Oo0][Xx])\d*\s*\b)[a-zA-Z0-9 _&'\/#]*$/
^^^^^^^^^^^^^^^^^^

请参阅regex demo

请注意,[a-z|A-Z|0-9 _&'/#] 不应包含|,因为它们被视为文字管道符号,而您最有可能的意思是将它们用作 OR 运算符。它们是括号内的 OR 运算符,但不在字符类内。

图案详细信息:

  • ^ - 字符串开头
  • (?!.*\b[Pp]([Oo0][Ss][Tt])?\.*\s*[Oo0]([Ff][Ff]([Ii][Cc ][Ee])?)?\.*\s*([Bb][Oo0][Xx])\d*\s*\b) - 负向前瞻,如果内部模式匹配失败已匹配
  • [a-zA-Z0-9 _&'/#]* - 零个或多个允许的字符
  • $ - 字符串结尾。

由于[a-zA-Z0-9_] = \w,您可以编写与

相同的内容
/^(?!.*\b[Pp]([Oo0][Ss][Tt])?\.*\s*[Oo0]([Ff][Ff]([Ii][Cc][Ee])?)?\.*\s*([Bb][Oo0][Xx])\d*\s*\b)[\w &'\/#]*$/

关于javascript - 如何结合正负正则表达式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38297083/

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