我正在尝试使用正则表达式检查字符串中的模式。我的要求是
%
或(%
是一个数字,反之亦然,任何数字之前都应%
始终%
(
)
and
or
数字值Valid string (%1 and %2 or %3)
Invalid %%1
我尝试了以下
regex ^[%(]+[%0-9]+[(]
请帮忙
这应该做到这一点:
^(?:\(|%[0-9]+)(?:\s+|%[0-9]+|and|or|\(|\))*$
从一个开括号或一个百分比开始,然后是一系列数字,然后继续允许空格或一个百分比,后跟一系列数字任意次数。如果您提供一个更具体的示例来说明您要匹配的内容,我可以更具体地说明
这不会强制匹配括号。您需要一个递归js函数
编辑
好了,这是一个更具体的函数,用于说明分隔符之间的间距和数量
^(?:\(|%[0-9])(?:\sand\s|\sor\s|\(+)(?:(?:%[0-9]|\)+)(?:\s(?:and|or)\s(?:%[0-9]|(?:\(\s?)+))?)*\s?\)*$
这将匹配以下内容:%3和%4或(%2或%3),但在您尝试使用它时将失败:%3和%4or(%2或%3)请注意%4和或者
同样,不需要关闭方括号,因此它可以匹配:%3和%4或(%2或%3,它也可以匹配:%3和%4或(%2或%3)))
它可以处理像这样的立即嵌套的括号:%3和%4或(((%2或%3)和%9)
我确定我错过了案件,请让我知道您遇到了哪些问题
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句