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
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,以确保成对发现任何帕伦斯:
您不能直接使用括号,因为它已经意味着正则表达式的意思。因此,当您使用括号时
]
使用
'('
代替。
我认为您可以使用这样的正则:
'\('
[
/^[NR]:(([()0-9.-]+|BT|P[TNR])[*+/-]?)+:V[0-9.-]+$/
在
JavaScript Regex Demo
版本应该是: