我试图将以下几种可能性与正则表达式相匹配:
MORE THAN CAD 10,000
MORE THAN CAD 10,000 BUT LESS THAN CAD 15,000
LESS THAN CAD 10,000我的regex适用于/^(((MORE|LESS) THAN CAD [\d,]+)|(MORE THAN CAD [\d,]+ BUT LESS THAN CAD [\d,]+))$/,但我想知道是否有更优雅的方法。
我尝试过/^(MORE THAN CAD [\d,]+)?(( BUT )?LESS THAN CAD [\d,]+)?$/,但它也允许以下内容通过:
MORE THAN CAD 10,000LESS THAN CAD 15,000发布于 2021-01-21 17:22:02
您可以使用
^(?:(MORE)|LESS) THAN CAD [\d,]+(?(1)(?: BUT LESS THAN CAD [\d,]+)?)$见regex演示。
详细信息
^ -字符串的开始(?:(MORE)|LESS) -非捕获组匹配MORE (在第1组中捕获)或LESSTHAN CAD -一个文字字符串[\d,]+ -一个或多个数字或逗号(?(1)(?: BUT LESS THAN CAD [\d,]+)?) -一个条件,允许匹配一个可选的BUT LESS THAN CAD [\d,]+模式,如果组1匹配。$ -字符串的末端。https://stackoverflow.com/questions/65832261
复制相似问题