Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 不确定可包含单位字符的数字的正则表达式_Regex - Fatal编程技术网

Regex 不确定可包含单位字符的数字的正则表达式

Regex 不确定可包含单位字符的数字的正则表达式,regex,Regex,我有以下只允许数字的正则表达式 ^[0-9]+$ 问题是,我还需要允许用户输入十进制方面和单位 所以这些都必须是有效的 123 123456789 1.25米 1.2K 1.5B 12345.53米 0.5米 如果有人能帮忙,我将不胜感激,因为您没有指定一个,我假设您使用的是与perl兼容的正则表达式引擎。您可以使用以下选项: /^([0-9]*\.)?[0-9]+(B|K|M|G)?$/ 我还假设像0.1这样的数字可以像.1那样编写。将单元封装在捕获组(B | K | M | G)中,可以很

我有以下只允许数字的正则表达式

^[0-9]+$

问题是,我还需要允许用户输入十进制方面和单位

所以这些都必须是有效的

123

123456789

1.25米

1.2K

1.5B

12345.53米

0.5米


如果有人能帮忙,我将不胜感激,因为您没有指定一个,我假设您使用的是与perl兼容的正则表达式引擎。您可以使用以下选项:

/^([0-9]*\.)?[0-9]+(B|K|M|G)?$/
我还假设像
0.1
这样的数字可以像
.1
那样编写。将单元封装在捕获组
(B | K | M | G)
中,可以很容易地从之后的结果中提取它


您可以测试正则表达式,因为您没有指定正则表达式,我假设您使用的是与perl兼容的正则表达式引擎。您可以使用以下选项:

/^([0-9]*\.)?[0-9]+(B|K|M|G)?$/
我还假设像
0.1
这样的数字可以像
.1
那样编写。将单元封装在捕获组
(B | K | M | G)
中,可以很容易地从之后的结果中提取它


您可以测试正则表达式,因为您没有指定正则表达式,我假设您使用的是与perl兼容的正则表达式引擎。您可以使用以下选项:

/^([0-9]*\.)?[0-9]+(B|K|M|G)?$/
我还假设像
0.1
这样的数字可以像
.1
那样编写。将单元封装在捕获组
(B | K | M | G)
中,可以很容易地从之后的结果中提取它


您可以测试正则表达式,因为您没有指定正则表达式,我假设您使用的是与perl兼容的正则表达式引擎。您可以使用以下选项:

/^([0-9]*\.)?[0-9]+(B|K|M|G)?$/
我还假设像
0.1
这样的数字可以像
.1
那样编写。将单元封装在捕获组
(B | K | M | G)
中,可以很容易地从之后的结果中提取它


您可以测试正则表达式

这是否适用于所有情况,并排除所有不匹配的情况

^\d*\.?\d+[GMKB]?$
说明:

^\d*    - Start with zero or more digits
\.?     - Allow a decimal point, if there is one
\d+     - Require at least one digit (which might be after a decimal point)
[GMKB]? - Allow one of these 4 letters
$       - Don't allow any more characters after this sequence

这是否适用于您的所有案例,并排除所有不应匹配的案例

^\d*\.?\d+[GMKB]?$
说明:

^\d*    - Start with zero or more digits
\.?     - Allow a decimal point, if there is one
\d+     - Require at least one digit (which might be after a decimal point)
[GMKB]? - Allow one of these 4 letters
$       - Don't allow any more characters after this sequence

这是否适用于您的所有案例,并排除所有不应匹配的案例

^\d*\.?\d+[GMKB]?$
说明:

^\d*    - Start with zero or more digits
\.?     - Allow a decimal point, if there is one
\d+     - Require at least one digit (which might be after a decimal point)
[GMKB]? - Allow one of these 4 letters
$       - Don't allow any more characters after this sequence

这是否适用于您的所有案例,并排除所有不应匹配的案例

^\d*\.?\d+[GMKB]?$
说明:

^\d*    - Start with zero or more digits
\.?     - Allow a decimal point, if there is one
\d+     - Require at least one digit (which might be after a decimal point)
[GMKB]? - Allow one of these 4 letters
$       - Don't allow any more characters after this sequence


是否允许带尾随或前导小数分隔符的数字?如果没有单位,是否允许带小数?如果没有单位,是否允许带尾随或前导小数分隔符的数字?是否允许带尾随或前导小数分隔符的数字?如果没有单位,是否允许带小数?是否允许带允许使用尾随或前导小数分隔符?如果没有单位,是否允许使用小数?为什么不使用
([BKMG])
?此外,为了捕获所有内容,第一部分应该是
([0-9]+)(\.[0-9]+)?
,对于您的第一条注释,是的,它也可以使用,因为单位都只包含一个字符。然而,如果我们有允许多个字符的单位,我的尝试将是正确的。这就是为什么我总是这么做。。。让我考虑一下你的第二个评论。。妈妈……关于你的第二个评论,我看不出我的解决方案和你建议的尝试在逻辑上有什么不同。也许我忽略了什么,你能举个例子吗?第二条注释中的正则表达式捕获了所有内容,因此你可以用它来替换:
s/../$1,$2\$3byte/
,或者为什么不使用
([BKMG])
?另外,要捕获所有内容,第一部分应该是
([0-9]+)(\.[0-9]+)?
,是的,它也可以使用,因为所有的单位都只包含一个字符。然而,如果我们有允许多个字符的单位,我的尝试将是正确的。这就是为什么我总是这么做。。。让我考虑一下你的第二个评论。。妈妈……关于你的第二个评论,我看不出我的解决方案和你建议的尝试在逻辑上有什么不同。也许我忽略了什么,你能举个例子吗?第二条注释中的正则表达式捕获了所有内容,因此你可以用它来替换:
s/../$1,$2\$3byte/
,或者为什么不使用
([BKMG])
?另外,要捕获所有内容,第一部分应该是
([0-9]+)(\.[0-9]+)?
,是的,它也可以使用,因为所有的单位都只包含一个字符。然而,如果我们有允许多个字符的单位,我的尝试将是正确的。这就是为什么我总是这么做。。。让我考虑一下你的第二个评论。。妈妈……关于你的第二个评论,我看不出我的解决方案和你建议的尝试在逻辑上有什么不同。也许我忽略了什么,你能举个例子吗?第二条注释中的正则表达式捕获了所有内容,因此你可以用它来替换:
s/../$1,$2\$3byte/
,或者为什么不使用
([BKMG])
?另外,要捕获所有内容,第一部分应该是
([0-9]+)(\.[0-9]+)?
,是的,它也可以使用,因为所有的单位都只包含一个字符。然而,如果我们有允许多个字符的单位,我的尝试将是正确的。这就是为什么我总是这么做。。。让我考虑一下你的第二个评论。。妈妈……关于你的第二个评论,我看不出我的解决方案和你建议的尝试在逻辑上有什么不同。也许我忽略了什么,你能举个例子吗?第二条注释中的正则表达式捕获了所有内容,因此你可以用它来替换:
s/../$1,$2\$3byte/
或soWorks a treat。谢谢你的款待。谢谢你的款待。谢谢你的款待。谢谢