regex - 如何验证我的 $ 货币正则表达式仅介于 0-9999.99 之间的数字?
问题描述
我写了我的正则表达式
^(\d{1,4}|\d{0,4}\.\d{1,2})$
它只接受 0-9999.99 的值,所以接受的值是:0、999.99、9999、999.9 但现在我想在开头或结尾也接受一个“$”,所以 $9999、9999$、$9999.00、9999.9 $ 也应该被接受。
我可以就如何调整我当前的正则表达式获得一些帮助吗?
解决方案
要在两端都不允许美元符号,并且如果支持前瞻,您可以使用在开头和结尾排除美元符号的模式开始^(?!\$.*\$$)
对于匹配,您可以在开头和结尾设置可选的美元符号以匹配所有 3 个变体。
^(?!\$.*\$$)\$?\s*(?:\d{1,4}|\d{0,4}\.\d{1,2})\s*\$?$
更新后的模式匹配:
^
字符串的开头(?!\$.*\$$)
否定前瞻断言不是以开头和结尾的字符串$
\$?\s*
匹配可选$
和可选的空白字符(?:\d{1,4}|\d{0,4}\.\d{1,2})
匹配 1-4 位数字,或 0-4 位数字和一个点后跟 1-2 位数字\s*\$?
匹配可选的空白字符和一个可选的$
$
字符串结束
如果不支持前瞻,您可以使用替换来匹配前面带有可选美元符号的模式以匹配 2 个变体,或者匹配仅以匹配第 3 个变体的美元符号结尾的模式。
^(?:\$?\s*(?:\d{1,4}|\d{0,4}\.\d{1,2})\s*|(?:\d{1,4}|\d{0,4}\.\d{1,2})\s*\$)$
查看另一个正则表达式演示
推荐阅读
- flutter - 循环进度不断旋转
- python - 在python3中使用flask同时上传多个文件
- node.js - 连接到 mongodb atlas 时,我的 Web 应用程序停止运行
- c# - 替换 C# 文件中的模式
- angularjs - 可以在 ui-router 延迟加载功能上添加控制器
- ios - 对于某些不支持 NFC 的设备,如何限制从 appstore 安装 ios 应用程序?
- javascript - 发出 AJAX 请求时如何修复“JSON 解析错误:意外的标识符数组”
- android - 如何使用计时器/处理程序更新数组适配器?
- python - 试图将真实和想象分开,但它会加起来
- java - 数组未正确更新,因为“显示数组”类对象在另一个类中初始化