我想开始知道如何去符合下列条件创建一个正则表达式:正则表达式验证,并提取字符串以十进制或分数
- 字符串必须以小数或分数 启动
- 十进制应该是正数,最多可以保留两位小数
- 分数应该是它自己的一个分数或一个整数和分数,即1 1/2,3/4,并用空格分隔。 (可能是冷静,如果有人写1和1/2,这新的将是1 1/2,但不是必需
- 列表项
我想验证一个字符串,或为十进制开始或一部分和得到提取的值在它外面
有效实例
"1 cup" = VALID = Extracted values: (1) (cup)
".5 cup" = VALID = Extracted values: (0.5) (cup)
"1.0 cup" = VALID = Extracted values: (1.0) (cup)
"1.10 cup" = VALID = Extracted values: (1.10) (cup)
"1/2 cup" = VALID = Extracted values: (1/2) (cup)
"1 1/2 cup" = VALID = Extracted values: (1 1/2) (cup)
"1 and 1/2 cup" = VALID = Extracted values: (1 1/2) (cup)
"1 and a 1/2 cup" = VALID = Extracted values: (1 1/2) (cup)
"1 & 1/2 cup" = VALID = Extracted values: (1 1/2) (cup)
无效实例
"1 1/2 1/4 1/4 cup" = INVALID (only allow whole and fraction, or one fraction)
"1.034 cup" = INVALID (2 decimal places only)
"cup 1/2" = INVALID (not the start of the string)
编辑 我到目前为止有:
解析分数:
\d*\s*(and*|and a*|\s*)\d+\/?\d*(.*)$
解析小数:
^\d{0,2}(\.\d{1,2})?$
我的合并版本:
(\d*\s*&|and*|and a*|\s*\s*\d+\/?\d*)|(\d{0,2}\.\d{1,2})*(.*)$
只是不知道如何正确地加入2,它可以更好地优化?和无效的一个仍然解析
任何帮助,将不胜感激,谢谢
问候DotnetShadow
我已编辑我的帖子,包括我目前为止如果有帮助 – DotnetShadow