Javascript 手上测量用正则表达式

Javascript 手上测量用正则表达式,javascript,c#,regex,Javascript,C#,Regex,美国的马通常以英寸和英寸为单位。一只手基本上只有4英寸。所以如果一匹马长62英寸。他应该有15.2手高,而不是15.5手高。这是因为小数点右边的部分实际上是小于4英寸的剩余英寸,是整个手的小数点 或者更简洁地说,小数点右侧的部分只能是一个1、2或3的单个数字。左边的部分应该是正整数。例如,如果以英寸为单位的马的测量值是4的倍数,那么测量值也可以是一个正整数 我在RegEx上几乎是一个哑巴,我在网上找不到这样的例子,我试图修改那些看起来很接近的例子,但以失败告终:) 以下是匹配的示例:15.1,9

美国的马通常以英寸和英寸为单位。一只手基本上只有4英寸。所以如果一匹马长62英寸。他应该有15.2手高,而不是15.5手高。这是因为小数点右边的部分实际上是小于4英寸的剩余英寸,是整个手的小数点

或者更简洁地说,小数点右侧的部分只能是一个1、2或3的单个数字。左边的部分应该是正整数。例如,如果以英寸为单位的马的测量值是4的倍数,那么测量值也可以是一个正整数

我在RegEx上几乎是一个哑巴,我在网上找不到这样的例子,我试图修改那些看起来很接近的例子,但以失败告终:)

以下是匹配的示例:
15.1
9.2
100.3
16

以下是不匹配的示例:
15.10
15.01
19.4
-15.1
16.0


哦,还有最后一件事。我将使用JavaScript和C来验证它。

如果你只能有一个整数或一个后跟
.1
.2
.3
,你可以用以下方法来验证:

\d+(\.[123])?
根据要匹配的方法(整个字符串或部分字符串),在末端使用适当的
\b
(或
^
/
$
)边界标记


如果你不想要真正的国际化数字,你可以用类似于
[1-9][0-9]*
的东西来代替
\d+

如果你只能用一个整数或一个整数后跟
.1
.2
.3
,你可以用类似的东西来代替:

\d+(\.[123])?
根据要匹配的方法(整个字符串或部分字符串),在末端使用适当的
\b
(或
^
/
$
)边界标记

如果你不想要真正的国际化数字,你可以用类似于
[1-9][0-9]*
的东西代替
\d+

正则表达式是
^[0-9]+(\.[1-3])?$

在js中:

var rx = /^[0-9]+(\.[1-3])?$/;
在c中#

正则表达式是
^[0-9]+(\[1-3])?$

在js中:

var rx = /^[0-9]+(\.[1-3])?$/;
在c中#



为什么这个问题看起来像是愚人节的问题?:-)这似乎是一种非常混乱的格式。想象一下,如果我们把5小时30分钟写成5.30分钟,而不是5:30或5.5小时。我不知道是否有一个标准的手和英寸格式,但5h2'或可能是单独的文本框,如果这是一个用户界面。似乎比5.2好。或者只是标准化为5.5手。乘以4可转换为英寸。对我来说那样更好。哈哈,我知道。非常混乱。但是马的人知道。我看到它写了15-2,15h2,甚至15hh2。(hh代表举手)但我想忠于官方单位规范:为什么这个问题看起来像是愚人节的问题?:-)这似乎是一种非常混乱的格式。想象一下,如果我们把5小时30分钟写成5.30分钟,而不是5:30或5.5小时。我不知道是否有一个标准的手和英寸格式,但5h2'或可能是单独的文本框,如果这是一个用户界面。似乎比5.2好。或者只是标准化为5.5手。乘以4可转换为英寸。对我来说那样更好。哈哈,我知道。非常混乱。但是马的人知道。我看到它写了15-2,15h2,甚至15hh2。(hh代表举手)但我想遵守官方的单位规范:你不应该在C#regex(也许还有C#)中使用
\d
,它将匹配Unicode数字,如
等,我仍然需要看到一个有用的程序。@xanatos:因为你从未发现它有用,并不意味着它没有用处。正是这种以自我为中心/以文化为中心的思维,导致了国际化领域的问题。我想,作为一个意大利人,你会对这些问题更加敏感,因为你古怪地交换小数点和逗号:-)@paxdiablo我对那些说变音符号是“特殊”字符的人非常敏感,但我确实认为数字就是数字,我不想看到一个DB以十种不同的数字格式显示高度。如果有人想使用阿拉伯-印度数字,他会将其与
[٠-٩]
一起使用。然后重点是,
\d
在.NET和Javascript中有不同的含义(除非您在.NET中使用一个选项来使用Ecmascript版本的Regex),但没关系,我也会为非国际化的可能性提供一个选项。您不应该在C#Regex中使用
\d
(也许还有C#它将匹配Unicode数字,如
١٣٣
,我仍然需要看到一个有用的程序。@xanatos:因为你从未发现它有用,并不意味着它没有用。正是这种以自我为中心/以文化为中心的思维,导致了国际化领域的问题。我想,作为一个意大利人,你会对这些问题更加敏感,因为你古怪地交换小数点和逗号:-)@paxdiablo我对那些说变音符号是“特殊”字符的人非常敏感,但我确实认为数字就是数字,我不想看到一个DB以十种不同的数字格式显示高度。如果有人想使用阿拉伯-印度数字,他会将其与
[٠-٩]
一起使用。然后重点是,
\d
在.NET和Javascript中有不同的含义(除非您在.NET中使用一个选项来使用Regex的Ecmascript版本),但没关系,我也会为非国际化的可能性提供一个选项。非常好用!谢谢但这允许前导零。因此它将匹配
001.1
。OP没有这样的例子,所以也许这没关系,但应该注意。如果需要,将
[0-9]+
更改为
[1-9][0-9]*
可以解决这个问题