正则表达式匹配X,Y,Z,XY或XZ

时间:2020-05-12 16:54:39

标签: regex

我正在尝试制作一个将成分的体积测量值转换为克的转换器。

这是我的表达/(\d?\u2009?\s?[\u00BC|\u2153|\u00BD|\u2154|\u00BE]?|\d?\u2009?\s?[1|2|3]\/[2|3|4]?)\s(cups|cup|teaspoons|teaspoon|tsps|tsp|tablespoons|tablespoon|tbsp|tbsps)?(.*)/g

我的问题是第一组。

我希望它捕获金额,所有这些都应该是有效的匹配项:

1
½
1/2


1 1/2

/\d?\u2009?\s?[\u00BC|\u2153|\u00BD|\u2154|\u00BE]?)/g匹配1,½,1½或1½
/(\d?\u2009?\s?[1|2|3]\/[2|3|4]?)/g匹配1、1 / 2和1 1/2

\u2009是在某些烹饪网站上使用的字符,其他unicodes用于食谱中常用的所有分数。

我不知道如何组合它们或做出包含所有内容的表达式,

提前谢谢!

1 个答案:

答案 0 :(得分:0)

结合的好方法。
详细但回溯最少。
尝试

/(\d[\ ]*[ \t]*[¼⅓½⅔¾]|[¼⅓½⅔¾]|\d[\ ]*[ \t]*(?:1\/[432]|2\/3|3\/4)|(?:1\/[432]|2\/3|3\/4)|\d)(?!\S)(?:[ \t]+(cups|cup|teaspoons|teaspoon|tsps|tsp|tablespoons|tablespoon|tbsp|tbsps))?/

demo