javascript - 无法让 RegEx 模式在使用 Javascript 的 MVC 5 View 中正常工作
问题描述
这是我的模式。我试图允许数字和两位小数加上一个可选的逗号三位数。
var pattern = /^[0-9]+(,\d{3})*\.[0-9]{2}$/;
允许
100,000.12
10,000.12
1,000.12
100.12
10.12
.12(不能让这个允许......见下文)
不允许
A B C D
1,000.12
1,00.12
1,000.0
1,000。
1,000
这是测试。如果我添加一个?在 [0-9] 之后它在这里工作,但它在我的 MVC 5 视图中不起作用。模态没有打开,所以 MVC 不喜欢它。
^[0-9]?+(,\d{3})*\.[0-9]{2}$
https://regex101.com/r/HwLS7q/1
更新 1
不允许
000,000.12、0.12 等...
任何帮助深表感谢!谢谢!
解决方案
[0-9]?+
是一个所有格匹配 1 或 0 位的模式,不允许回溯到模式中。JS 正则表达式不支持所有格量词,因此存在问题。
你需要使用
^[0-9]*(?:,[0-9]{3})*\.[0-9]{2}$
或者
^(?:[0-9]+(?:,[0-9]{3})*)?\.[0-9]{2}$
在这里,[0-9]*
匹配零个或多个数字,并(?:[0-9]+(?:,[0-9]{3})*)?
匹配一个可选的 1+ 数字序列,后跟 0+ 重复,
和 3 位组。
请参阅此正则表达式演示。
更精确的模式是将第一个数字块限制为 1、2 或 3 位数字,并使整数部分可选:
^(?:[0-9]{1,3}(?:,[0-9]{3})*)?\.[0-9]{2}$
请参阅正则表达式演示。
细节
^
- 字符串的开始(?:[0-9]{1,3}(?:,[0-9]{3})*)?
- 一个可选的序列[0-9]{1,3}
- 一到三位数(?:,[0-9]{3})*
- 0次或多次重复,
- 逗号[0-9]{3}
- 三位数
\.
- 点[0-9]{2}
- 两位数$
- 字符串结束。
推荐阅读
- python - Kafka 根据请求使用单个消息
- csv - 从 pcap 转换为 csv
- java - 表达式预期 Intellij Jav
- arrays - 使用递归创建字符串数组
- python - 两个熊猫数据帧上的完全外部连接
- python - 如何使用 word2Vec 和深度学习模型预测文本的情感?
- php - 使用 PHPSpreadsheet 将多个链接添加到一个单元格
- pandas - 从 Pandas 的“groupby”计算中排除低样本数
- reactjs - 我的自定义组件在 react App.js 中不起作用
- python - Python:如果我有一个元组(A,B),我如何根据 A 值取范围内所有 B 值的平均值?