规范表达,可选(开放)括号,但应结束括号。 我创建了一个正则表达式,该表达式允许用户在我的应用程序中制作公式。我的正则表达式很好,但是我希望用户进行打开和关闭的括号。 我的C ...

问题描述 投票:0回答:4
几个例子当前有效的示例:

N:0.3*BT/PN*PR:V1 N:2000+PN/BT:V0.5 R:BT*PN-500:V2

我希望与正则表达式使用

()
当前没有一些示例:

N:(2000+PN)/BT:V0.5 R:BT*(PN-500):V2

我已经阅读了积极和消极的lookahead,以创建 /其他结构,但我似乎找不到适合我的需求的逻辑。 非常感谢是否有人可以指导我朝着正确的方向指导。
P.S。我正在使用JavaScript Regex引擎。
    

HERHE是您的正则版本的修改版本,允许任何数量的匹配(但不是嵌套)Parens(请参阅
Regex101

):
(?=
    [^()]*
    (\([^()]+\)[^()]*)*
    $
)

^[NR]:   //START WITH N: OR R:

(?:
    \(?(?:[-.0-9]+|BT|PT|PN|PR)\)? //ALLOW 48.934, BT, PT, PN OR PR
    [-+*\/]                        //ALLOW OPERATORS /,*,+ and -
    \(?(?:[-.0-9]+|BT|PT|PN|PR)\)? //ALLOW 48.934, BT, PT, PN OR PR
)+ //REPEAT x TIMES

(?:
    [-+*\/]                        //ALLOW OPERATORS /,*,+ and -
    (?:[-.0-9]+|BT|PT|PN|PR)       //ALLOW 48.934, BT, PT, PN OR PR
    \)?
)*`


:V //ADD MANDATORY :V
[-.0-9]+ //CLOSE REGEX WITH NUMBER

解释:

比对

[(N|R)]

和其他外部分组的清理工作的主要变化是在开始时添加正面的lookahead,以确保成对发现任何帕伦斯:

javascript php regex
4个回答
1
投票

允许在每个数字或变量周围允许parens。

首先,您应该更改正直的第二行,因为几乎每个字符
^[NR]:

[

都是字面的。这也重要的是括号。

然后,我需要让您失望的是,有条件使用LookAheads,但在我阅读的JavaScript中不使用。我不知道Xregexp,也许我们只是希望它能做到。如果else应该是:

(?(?= \()[^)]*)
基本语法:
(?(?= regexp)然后| else)


0
投票

您不能直接使用括号,因为它已经意味着正则表达式的意思。因此,当您使用括号时
]
使用
'('
代替。
    

我认为您可以使用这样的正则:

'\('

[

/^[NR]:(([()0-9.-]+|BT|P[TNR])[*+/-]?)+:V[0-9.-]+$/

0
投票

JavaScript Regex Demo
版本应该是:


0
投票

注:

/^[NR]:(([()0-9\.-]+|BT|P[TNR])[*+\/-]?)+:V[0-9\.-]+$/
用于匹配其中存在的单个字符,因此

[]将匹配[NR]

N,并且可以是R


最新问题
© www.soinside.com 2019 - 2025. All rights reserved.