如何为仅包含0-9数字、逗号、句点、加号、减号和空格的数字字符串创建正则表达式
本文关键字:数字 空格 正则表达式 创建 字符串 数字字符 句点 包含 逗号 加号 | 更新日期: 2023-09-27 18:20:59
除了空间之外,我有一个适用于所有内容的,效果很好:
new Regex("[^0-9-+,.'r]");
但增加空间似乎是个问题。除此之外,我不需要任何有效性检查。
在我看来,这就像你想要的(警告:未经测试)
new Regex("[''d-''+,''.''s+]+");
您的正则表达式几乎匹配所有不需要的内容,因为^
否定字符类中的符号。它匹配除数字、逗号、句点、连字符、加号和回车以外的所有符号。
请注意,回车并不是所有可以与's
匹配的空格。如果不希望匹配换行符,请使用'p{Zs}
而不是's
。
如何为仅包含0-9数字、逗号、句点、加号、减号和空格的数字字符串创建正则表达式?
如果您需要匹配一个可能为空的完整字符串:
^[0-9,.+'s-]*$
请参阅regex演示。如果一个字符串应该至少包含一个符号,请使用^[0-9,.+'s-]+$
(注意末尾的+
量词)。
Regex细分:
^
-字符串的开头[0-9,.+'s-]*
-0个或多个符号。。。0-9
-一位数字,
-逗号.
-一个点+
-文字加号's
-任意(也是Unicode)空白-
—文字连字符(减号)
$
—字符串结束
在C#中,
var rx = new Regex(@"^[0-9,.+'s-]*$");
在逐字逐句的字符串文字中,您不必对反斜杠进行转义,因为它们被视为文字。
如果您计划删除所有符号,以便保留数字、句点、逗号、连字符和加号,只需将其取反并删除锚点:
[^0-9,.+'s-]+
请参阅另一个regex演示
只需在此处添加Regex的替代方案,您还可以使用LINQ
public static bool ContainsOnlyAllowedChars(string str, string charsAllowed = "0123456789,.+- ")
{
return str.All(c => charsAllowed.Contains(c));
}
使用
string myInput = "4,.";
Console.WriteLine(ContainsOnlyAllowedChars(myInput)); //outputs true
myInput = "a4,.";
Console.WriteLine(ContainsOnlyAllowedChars(myInput)); //outputs false
最终的解决方案:
private static bool IsTextNumeric(string text)
{
Regex regex = new Regex(@"[^0-9-+,.'s]");// regex that matches disallowed text
return !regex.IsMatch(text);
}
While ''s包含''r。