gpt4 book ai didi

javascript - 我可以在 JavaScript 中创建一个正则表达式来验证特定的数学公式 - 字母和括号,其中不应嵌套括号

转载 作者:行者123 更新时间:2023-12-05 02:27:46 24 4
gpt4 key购买 nike

我想在 JavaScript 中使用正则表达式验证输入字段,它应该验证以下情况:

有效:

A and B and C and D
(A or B) and C
(A or B or C) and D
(A or B or C or D) and E
A and (B or C) and D
A and (B or C) or (C and D)
A or (B and C)
(A and B) or (C and D)

无效:

A and B and C and 
(A or B and C
(A or B or C) and D or
(A or B or C or D and E
A and or (B or C) and D
A and (B or (C and D)))
A (B and C)
(A and B) or C and D)
(A and B or C and D)

基本上我需要一些 A-Z 字母(仅大写)后跟“and”或“or”和无限制的括号,但左括号的数量应与右括号的数量相匹配。同样,在左括号之后,我应该只能插入 A-Z 大写字母,在右括号“and”、“or”或 A-Z 大写字母之后也应该有效。嵌套括号也不应有效。

我想出了这个解决方案,但它只验证 A-Z 大写、“and”和“or”单词和括号,因此提供的所有无效案例都与我的正则表达式匹配。

/^[A-Z(]?[A-Z]| |and|or|[(]|[A-Z]|[)]/gm

最佳答案

没有嵌套括号,这很容易。 conjunctive normal form 的一个分 ionic 句是

[A-Z]( or [A-Z])*

在使用 or 的子句周围需要括号:

[A-Z]|\([A-Z]( or [A-Z])*\)

那么整个公式就是

([A-Z]|\([A-Z]( or [A-Z])*\))( and ([A-Z]|\([A-Z]( or [A-Z])*\)))*

关于javascript - 我可以在 JavaScript 中创建一个正则表达式来验证特定的数学公式 - 字母和括号,其中不应嵌套括号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72936749/

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