加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

组合正则表达式

发布时间:2020-12-14 06:41:52 所属栏目:百科 来源:网络整理
导读:在收集用户输入的各种条件如 开始于:/(^ @)/ 结束于:/(@ $)/ 包含:/ @ / 不包含 要在用户输入多个条件时生成单个正则表达式, 我将它们与“|”所以如果1和2给定它变成/(^ @)|(@ $)/ 这种方法工作到目前为止, 我无法正确确定,应该是正则表达式4的条件?
在收集用户输入的各种条件如

>开始于:/(^ @)/
>结束于:/(@ $)/
>包含:/ @ /
>不包含

要在用户输入多个条件时生成单个正则表达式,
我将它们与“|”所以如果1和2给定它变成/(^ @)|(@ $)/

这种方法工作到目前为止,

我无法正确确定,应该是正则表达式4的条件?并结合正则表达式这种方式工作?

Update: @(user input) won’t be same
for two conditions and not all four
conditions always present but they can
be and in future I might need more
conditions like “is exactly” and “is
exactly not” etc. so,I’m more curious
to know this approach will scale ?

Also there may be issues of user input
cleanup so regex escaped properly,but
that is ignored right now.

条件是ORed还是ANDing在一起?
Starts with: abc
Ends with: xyz
Contains: 123
Doesn't contain: 456

OR版本相当简单;正如你所说,它主要是在各个条件之间插入管道的问题。正则表达式只要一个替代匹配就停止寻找匹配。

/^abc|xyz$|123|^(?:(?!456).)*$/

第四个选择可能看起来很奇怪,但这是如何表达“不包含”正则表达式。顺便说一下,替代的顺序无关紧要;这实际上是相同的正则表达式:

/xyz$|^(?:(?!456).)*$|123|^abc/

AND版本更复杂。在每个单独的正则表达式匹配后,匹配位置必须重置为零,以便下一个正则表达式可以访问整个输入。这意味着所有的条件必须被表示为lookaheads(技术上,他们中的一个不必是一个前瞻,我认为它表达的意图更清楚这种方式)。最后。* $完成比赛。

/^(?=^abc)(?=.*xyz$)(?=.*123)(?=^(?:(?!456).)*$).*$/

然后有和AND和OR条件的结合的可能性 – 这是真正的乐趣开始。 :D

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读