Валюта или проценты, соответствующие регулярному выражению - PullRequest
1 голос
/ 06 декабря 2011

Мне нужно сопоставить следующие значения, и мои текущие Regular Expression не могут получить % значения для сопоставления или числа без - и $

Значения, которые мне нужно сопоставить:

$ 123,45 - совпадение

- $ 123,45 - совпадение

123,45 - совпадение потребностей

-123,45 - совпадение

.99 - Соответствует потребностям

-. 99 - Соответствует

7% - Соответствует потребностям

-7% - Соответствует потребностям

500 - Соответствует потребностям

Регулярное выражение:

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

Ответы [ 4 ]

6 голосов
/ 06 декабря 2011

Вот, пожалуйста:

/^-?\$?[0-9]*\.?([0-9]{2})?%?$/
0 голосов
/ 15 апреля 2014

Я адаптировался к ответу Акеллехе, чтобы он соответствовал диапазону символов валюты:

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
0 голосов
/ 06 декабря 2011
/^-?\$?[0-9]*(\.?[0-9]{1,2})?%?$/
0 голосов
/ 06 декабря 2011
$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% - это число

...