Regex 不确定可包含单位字符的数字的正则表达式
我有以下只允许数字的正则表达式 ^[0-9]+$ 问题是,我还需要允许用户输入十进制方面和单位 所以这些都必须是有效的 123 123456789 1.25米 1.2K 1.5B 12345.53米 0.5米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)中,可以很
如果有人能帮忙,我将不胜感激,因为您没有指定一个,我假设您使用的是与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。谢谢你的款待。谢谢你的款待。谢谢你的款待。谢谢