我正在尝试为一个数字创建一个正则表达式,该数字可以选择前面加一个' - '。
到目前为止我所拥有的是:"-?\\d+"
(在C#中使用双反斜杠来逃避'\')
问题是这也匹配--123
。我希望开头只能有一个负面符号。
答案 0 :(得分:1)
如果您正在验证字符串是否包含数字而没有其他内容,即字符串包含可选的连字符后跟一些数字,那么您可以将模式锚定到字符串的开头和结尾,从而{{1} }。
另一种验证字符串看起来像是负数的方法是将其解析为具有^-?\d+$
或int.Parse
方法的整数。如果解析成功,那么您有一个与所需模式匹配的有效数字。对于整数来说太大(正或负)的数字将无法解析。使用int.TryParse
和long.Parse
方法可以接受更大的数字。对于任意大数字,还有一个long.TryParse
类。
答案 1 :(得分:0)
使用:
"(?:(?<!-)-)?\\d+"
<强>解释强>
(?<!)
这是negative lookbehind assertion,表示“不得以此为先”。它也是零宽度,所以不消耗任何东西。
(?:)
这是non-capturing group,因为我们不想捕捉匹配的内容。该组仅用于逻辑,因此关闭了捕获。
答案 2 :(得分:0)
如何在C#
中将其解析为int
int num;
bool success = int.TryParse(val, out num);
离开正则表达式直到你真的需要它......