c# - 允许在字符串中间输入一些字符
问题描述
我应该在我的正则表达式代码中添加什么表达式以允许字符串中间出现字符“-”?谢谢之前:) 这个正则表达式用于数字输入。
此有效输入样本:1,000,000.0xxx <-- 有效 | -1,000,000.0xxx <-- 有效 | 1.00-2.00 <-- 这次不允许使用下面我当前的正则表达式,这是我想问的。
这个无效输入样本:1.00,00 | -5,000000
这是我当前的正则表达式代码:
/^(-?)(\d*(\.\d+)?|-|\.\.\.|(?!0+\.00)(?=.{1,9}(\.|$))(?!0(?!\.))\d{1,3}(-?,\d{3})(,\d{3})*(\.\d+)?)$/
解决方案
很难猜测这里可能需要什么,但我猜你想传递十进制数和正十进制范围,这些表达式可能需要研究,也许:
^(?:-?\d{1,3},?)?(?:\d{3},?)*\.[0-9]{1,2}(?:-(?:\d{1,3},?)?(?:\d{3},?)*\.[0-9]{1,2})?$
^(?:-?\d{1,3},?)?(?:\d{3},?)*\.[0-9]{1,2}$|^(?:-?\d{1,3},?)?(?:\d{3},?)*\.[0-9]{1,2}-(?:\d{1,3},?)?(?:\d{3},?)*\.[0-9]{1,2}$
并且可能会因某些意外情况而失败。
演示
如果您想探索/简化/修改表达式,它已在 regex101.com的右上角面板中进行了说明。如果您愿意,您还可以在此链接中观看它如何与一些示例输入匹配。
测试
using System;
using System.Text.RegularExpressions;
public class Example
{
public static void Main()
{
string pattern = @"^(?:-?\d{1,3},?)?(?:\d{3},?)*\.[0-9]{1,2}(?:-(?:\d{1,3},?)?(?:\d{3},?)*\.[0-9]{1,2})?$";
string input = @"1,000,000.0
-1,000,000.0
100,000,000.0
-1,000,000,000,000.0
1.00-2.00
1.00
1
11
123
0
.00,00
-5,000000";
RegexOptions options = RegexOptions.Multiline;
foreach (Match m in Regex.Matches(input, pattern, options))
{
Console.WriteLine("'{0}' found at index {1}.", m.Value, m.Index);
}
}
}
正则表达式电路
jex.im可视化正则表达式:
推荐阅读
- r - 如何在 cv.glmnet 中查看哪些系数不为 0
- javascript - Firebase Cloud Firestore - How to query two sub-collections simultaneously?
- python - iOS iPhone 应用程序 - 是否可以传递参数并从应用程序中嵌入的 Python 脚本获取输出?
- c - Can't find valgrind error on program which terminates and returns the right output correctly
- python - flake8 - 忽略函数的警告
- javascript - How to add Mute/Unmute Button on a Video Background [On Divi - WordPress]
- tensorflow - CoreMLTools 转换导致“读取 protobuf 规范时出错。验证器错误”
- vim - 为 VIM 添加 RTL 和 LTR 支持
- vue.js - Unexpected token 'import' error while running Jest tests?
- vba - Cell validation - checking if date [Excel VBA]