Skip to main content
 首页 » 编程设计

c#之你能推荐一个更好的替代这个正则表达式的方法吗

2024年02月05日28yxwkf

private const string NUMERIC_REGEX = "\\W*([0-9]+)(\\W)?([0-9]*)\\W*" 

我发现我正在处理的项目中使用了这个正则表达式。假设从包含货币的字符串中解析数字。

喜欢“14.22 €”=> 14.22

但是好像不支持这个。有人可以帮助我调整它以使其也可以使用特殊货币符号吗?

作为替代方案,我发现这个 ([\d,.]+) 可以很好地满足我的需要,但我不确定我是否遗漏了任何特殊情况,或者可能太笼统了。

请您参考如下方法:

您的问题的一个很好的答案是使用正则表达式:

(?:\p{Sc} ?)?([\d,.]+)(?: ?\p{Sc})? 

Regex Proof

此正则表达式只是您使用的正则表达式的扩展版本。 它所做的是检查您的号码前后的可选货币符号。

匹配货币符号的魔法是\p{Sc},如您所见here , 和一个可选的空间。

此正则表达式检查非捕获组中的货币符号,这意味着捕获组 1 将是您的号码。

有关更多说明,只需单击此答案中的正则表达式证明链接。