2017-02-20 24 views
-2

У меня есть строка:Как исправить preg_match(): Неизвестный модификатор '{'?

$11,950 Some random string $415 

, и я хочу, чтобы разобрать первую информацию о цене, как целое:

11950 

Для того, чтобы получить первую цифровую часть с thouand сепаратором, я создал регулярное выражение:

[0-9]{1,3}(,[0-9]{3})*(\.[0-9]+)? 

, который работает, как ожидалось на online regex editor.

Но когда я использую его для preg_match:

$price = 0; 
$content = '$11,950 Some random string $415'; 
if (preg_match('[0-9]{1,3}(,[0-9]{3})*(\.[0-9]+)', $content, $matches)) {    
    var_dump($matches[0]); 
} 

Я получаю сообщение об ошибке:

preg_match(): Unknown modifier '{' 

php sandbox

Что я делаю неправильно?

+3

'preg_match ('/ [0-9] {1,3} ([0-9] {3}) * (\ [0-9] +)/', $ content, $ matches) ' – anubhava

+1

Прочитайте о [разделителях] (http://php.net/manual/en/regexp.reference.delimiters.php) –

ответ

0

Применение Как это:.

$regex = "/[0-9]{1,3}(,[0-9]{3})*(\.[0-9]+)/"; 
$content = '$11,950 Some random string $415'; 
    if (preg_match($regex, $content, $matches)) { 

     var_dump($matches[0]); 
    } else { 

     echo "The regex pattern does not match. :("; 
    }