正则表达式匹配货币或百分比

发布于 2024-12-20 02:25:11 字数 382 浏览 1 评论 0原文

我需要匹配以下值,而我当前的 正则表达式 似乎无法获得要匹配的 % 值或没有 - 和 < code>$

值我需要匹配:

$123.45 - 匹配

-$123.45 - 匹配

123.45 - 需求匹配

-123.45 - 匹配

.99 - 需求匹配

-.99 - 匹配

7% - 需求匹配

-7% - 需求匹配

500 - 需求匹配

正则表达式:

^[-$][$]?\d*(?:\.\d{0,2})?$

I need to match the following values and my current Regular Expression can't seem to get % values to be matched or numbers without - and $

Values I need a matched:

$123.45 - Match

-$123.45 - Match

123.45 - Needs Matched

-123.45 - Match

.99 - Needs Matched

-.99 - Match

7% - Needs Matched

-7% - Needs Matched

500 - Needs Matched

Regular Expression:

^[-$][$]?\d*(?:\.\d{0,2})?$

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

只有影子陪我不离不弃 2024-12-27 02:25:11

干得好:

/^-?\$?[0-9]*\.?([0-9]{2})?%?$/

Here you go:

/^-?\$?[0-9]*\.?([0-9]{2})?%?$/
温柔嚣张 2024-12-27 02:25:11
$str = " 
$123.45 - Match
-$123.45 - Match
123.45 - Needs Matched
-123.45 - Match
.99 - Needs Matched
-.99 - Match
7% - Needs Matched
-7% - Needs Matched
500 - Needs Matched
";

preg_match_all('#-?[$]?[0-9]*\.?[0-9]{2}+[%]?#i',$str, $res);
print_r($res);

这使得网络有点宽泛,因为它发现 -$123.12% 是一个数字

$str = " 
$123.45 - Match
-$123.45 - Match
123.45 - Needs Matched
-123.45 - Match
.99 - Needs Matched
-.99 - Match
7% - Needs Matched
-7% - Needs Matched
500 - Needs Matched
";

preg_match_all('#-?[$]?[0-9]*\.?[0-9]{2}+[%]?#i',$str, $res);
print_r($res);

This casts the web a little to wide though as it finds -$123.12% to be a number

时光礼记 2024-12-27 02:25:11
/^-?\$?[0-9]*(\.?[0-9]{1,2})?%?$/
/^-?\$?[0-9]*(\.?[0-9]{1,2})?%?$/
遗失的美好 2024-12-27 02:25:11

我根据 akellehe 的答案进行了调整,以匹配一系列货币符号:

var regex = new RegExp("^-?[^0-9]?[0-9]*[0-9\u002e]+%?$");

并捕获输出以进行更多分析:

var regex = new RegExp("^(-?)([^0-9]?)([0-9]*[0-9\u002e]+)(%?)$");
// $1 captures the negative sign,
// $2 captures the currency symbol
// $3 captures the number
// $4 captures the percent sign

I adapted on akellehe's answer to match a range of currency symbols:

var regex = new RegExp("^-?[^0-9]?[0-9]*[0-9\u002e]+%?$");

and to capture the output for more analysis:

var regex = new RegExp("^(-?)([^0-9]?)([0-9]*[0-9\u002e]+)(%?)$");
// $1 captures the negative sign,
// $2 captures the currency symbol
// $3 captures the number
// $4 captures the percent sign
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文