用于在字符串中查找十进制数的正则表达式
Regular expression to find decimal numbers in a string
我正在尝试搜索一个嵌入十进制数的字符串。该数字使用逗号表示(百千分隔符),使用句点表示十进制分隔符。
无效十进制数示例:
- .33,.333(数字前面必须至少有一位数字,尽管为零)
- 1,22,33.33,1,22.333(逗号分隔数字中的最后一段必须有3位数字)
- .3,.3333(十进制数必须在小数后有2或3位数字)
- ,0.33(小数不能以逗号开头)
有效十进制数示例:
- 0.33&10.333
- 1,22333.33&1222.333
特殊情况:如果字符串像"You a/c bal.33.33"。结果应该是33.33
我尝试了以下正则表达式:
(((''d+'',)+''d{3})|([^,]''d+))''.''d{2,3}(?!''.''d)
它适用于所有情况,但当数字以逗号开头时会失败。
您可以将捕获组用作
/(?:[^'d,]|^)('d+(?:(?:,'d+)*,'d{3})?'.'d{2,3})'b/
捕获组1,
('d+(?:(?:,'d+)*,'d{3})?'.'d{2,3})'b
将在字符串中包含十进制数。(?:[^'d,]|^)
确保捕获组正确捕获整个数字,而不是其中的一部分
Regex演示
测试
var str = "0.33";
var matches = str.match(/(?:[^'d,]|^)('d+(?:(?:,'d+)*,'d{3})?'.'d{2,3})'b/);
console.log(matches[1])
=> 0.33
var str = "You a/c bal.33.33"
var matches = str.match(/(?:[^'d,]|^)('d+(?:(?:,'d+)*,'d{3})?'.'d{2,3})'b/);
console.log(matches[1])
=> 33.33
只需尝试以下正则表达式:
^'d+((,'d+)*,'d{3})?'.'d{2,3}$
演示
相关文章:
- 在mongoose中使用正则表达式在对象数组中进行查询搜索
- 如何将正则表达式包含到字符串数组中
- 将数字数组转换为合适的正则表达式
- 数组上的正则表达式
- 用于验证十进制数的正则表达式
- 返回Javascript中给定正则表达式的文本范围数组
- Javascript if数组包含正则表达式字符串
- 使用正则表达式将字符串转换为javascript数组
- 按键时的正则表达式,取一个十进制值,允许小数后三位
- 如何创建一个像SQL十进制类型一样匹配(p,s)精度和小数位数的正则表达式
- 使用jquery验证器插件为十进制数设置正则表达式
- 用于在字符串中查找十进制数的正则表达式
- 将正则表达式存储在数组中在 Javascript 中不起作用
- 十进制数的正则表达式
- 正则表达式正负十进制数,逗号分隔
- JavaScript正则表达式,用于将可选的十进制数与可选的度量标识符相匹配
- 十进制数包含+、-符号的正则表达式
- 带可选小数点的十进制数的正则表达式
- 用于验证具有固定范围的十进制数的正则表达式
- 如何在javascript中创建动态正则表达式来验证十进制数