大佬教程收集整理的这篇文章主要介绍了强制数字的正则表达式小于 1000 并且有小数点(如果有),大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我需要用虚拟值替换字符串中的价格值。
只有在以下情况下验证才会通过 价格低于1000(价格
有效数字:
123,123.45,12 34,$12 34,$123,$1.23
无效数字:
9999,99.999,99.9,1234 99
我试过这个正则表达式
^\$?(\d{1,3})+([\s|\.]{1}[0-9][0-9])?
但它仍然匹配12345 我该如何解决这个问题?
另外,这里是我想用正则表达式编辑的示例文本
输入:
我为购买 ID 123456
和电话号码 1234 3456 5678
支付了 199.99 美元。
所需的输出:
我为购买 ID 123456
和电话号码 1234 3456 5678
支付了 dummy_price。
非常感谢您的帮助。
你可能会使用
(?<!\S)\$?\d{1,3}(?:[. ]\d\d)?(?!\S)
(?<!\S)
断言左侧的空白边界\$?
匹配可选的 $
\d{1,3}
匹配 1-3 位数字(?:[. ]\d\d)?
可选匹配 .
或
和 2 个数字(您也可以使用 \s
但它也可以匹配换行符(?!\S)
断言右侧的空白边界Regex demo
如果您也不想匹配 99
中的 1234 99
,您可以断言不是 4 位数字后跟左边的空格
(?<!\S)(?<!\d\d\d\d )\$?\d{1,3}(?:[. ]\d\d)?(?!\S)
regex demo
,\b\$?(\d{1,3})([\.][0-9][0-9])?\b
您的错误是您将限定符 \d{1,3}
与另一个限定符 +
一起使用。在这种情况下,加号表示 {1,}
。另一个问题是这种结构 [\s|\.]
意味着您希望垂直符号 |
与空格和点一起作为分隔符。当您将 |
放在方括号中时,不再意味着像普通括号中那样的选择选项。
我放了 \b
表示词边界。
说明:
在您的有效情况下,不应出现 12 34
和 $12 34
(根据您的定义,它们不是数字)。我认为您打算在有效情况下放置 .
而不是空格,所以我假设这样......
那你可以试试这个:
import re
valids = ['123','123.45','12.34','$12.34','$123','$1.23']
invalids = ['9999','99.999','99.9','1234 99']
pattern = r'^\$?\d{1,3}(\.\d{2})?$'
print([bool(re.match(pattern,item)) for item in valids])
print([bool(re.match(pattern,item)) for item in invalids])
输出:
[True,True,True]
[false,false,false]
说明:
\$?
允许美元符号在第一个位置是可选的。
\d{1,3}
应小于 1000。
(\.\d{2})?
小数部分是可选的,但如果存在,则允许使用 2 位数字。
$
字符串结尾
执行 x[b] 后,随后的向量没有值 here 的真实索引的记忆。那个数据丢失了。另一种方法是将 falSE 的值调节为非常大的值。例如
以上是大佬教程为你收集整理的强制数字的正则表达式小于 1000 并且有小数点(如果有)全部内容,希望文章能够帮你解决强制数字的正则表达式小于 1000 并且有小数点(如果有)所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。