Php регулярное выражение число из строки

Регулярные выражения для того, чтобы оставить в строке PHP только цифры

От автора: моя племянница решила стать писателем-фантастом. Это девятилетнее дарование несколько дней пыталась придумать сюжет будущего шедевра, не забывая попутно «пытать» и своих родственников. В результате она нафантазировала мир, в котором вместо букв используются цифры. Тогда в этой мире будут в PHP только цифры?

Наша реальность

Но вернемся в нашу реальность, где цифры – это цифры, а буквами пишут слова. И опять сегодня речь пойдет о регулярных выражениях. Только с их помощью можно правильно просеять содержимое и получить искомую строчку, сочетание символов или просто цифры. Поиском последних и займемся. Но сначала определимся, что мы хотим сделать с найденными цифрами.

С помощью PHP оставляем только цифры:

Онлайн курс «PHP-разработчик»

Изучите курс и создайте полноценный проект — облачное хранилище файлов

С нуля освоите язык программирования PHP, структурируете имеющиеся знания, а эксперты помогут разобраться с трудными для понимания темами, попрактикуетесь на реальных задачах. Напишете первый проект для портфолио.

Регулярные выражения для того, чтобы оставить в строке PHP только цифры

Теперь разберемся, что делает функция preg_replace(). Первым аргументом она принимает шаблон, по которому будет происходить поиск значений в строке $str1 (третий аргумент) и затем заменять найденное на второй аргумент (пробел).

Рассмотрим поближе регулярку: /[^0-9]/

В шаблоне указано, что нужно находить все символы, кроме цифр. В свою очередь preg_replace() нашла значения, соответствующие регулярному выражению и заменила на пробел. Таким образом мы реализовали ввод только цифр с помощью PHP.

Другие примеры

«Окунемся» глубже и модифицируем шаблон. Для этого используем в синтаксисе регулярных выражений метасимволы: \d – означает любую цифру, \D – обозначает любой символ, не являющийся цифрой.

Применим эти метасимволы в следующих примерах. В первом из них мы задействуем еще одну функцию PHP, которая предназначена для работы с регулярками.

Регулярные выражения для того, чтобы оставить в строке PHP только цифры

Регулярные выражения для того, чтобы оставить в строке PHP только цифры

Понятно, что в этом примере не используется регулярное выражение PHP только цифры оставляющее в строке. Тем не менее, такой вариант реализации тоже востребован. Его можно применять для проверки соблюдения пользователями синтаксиса пароля, устанавливаемого во время регистрации.

Но вернемся к новой функции – preg_match(). В отличие от предыдущей эта ничего не меняет и не вырезает. Она лишь «отвечает», присутствует ли в строке $str1значение, которое подходит под регулярное выражение, переданное в качестве первого аргумента.

Также с помощью приведенных в примерах регулярок можно в PHP оставлять только цифры в строке. Рассмотрим шаблоны поближе:

Самым коротким из них является второй вариант. В первом дополнительно используется символ отрицания («^»). Если он указан в начале шаблона, то это говорит о том, что нужно искать все кроме указанных далее диапазонов символов.

Обрезание строк

Но вернемся к выполнению нашей главной задачи – как в тексте с помощью PHP оставить только буквы и цифры. Поработаем теперь с диапазонами. В самом первом скрипте мы использовали регулярное выражение, в котором не применялись модификаторы: /[^0-9]/

То есть, все символы, кроме цифр от нуля и до 9. А можно ли сузить этот диапазон? Давайте пробовать методом «тыка» :).

Источник

Numbers only regex (digits only) PHP

Numbers only (or digits only) regular expressions can be used to validate if a string contains only numbers.

Basic numbers only regex

Below is a simple regular expression that allows validating if a given string contains only numbers:

Enter a text in the input above to see the result

Real number regex

Real number regex can be used to validate or exact real numbers from a string.

Enter a text in the input above to see the result

 

Enter a text in the input above to see the result

Notes on number only regex validation

In PHP you can also validate number by using is_numeric function:

Create an internal tool with UI Bakery

Discover UI Bakery – an intuitive visual internal tools builder.

Источник

php – regex – как извлечь число с десятичной точкой (точка и запятая) из строки (например, 1,120.01)?

Правильное регулярное выражение для сопоставления чисел с запятыми и десятичными знаками выглядит следующим образом (первые два будут проверять правильность форматирования номера):

десятичная опция (два знака после запятой)

Визуализация регулярных выражений

Демоверсия Debuggex

Разъяснение:

number (decimal required) ^[+-]?4(. 2)*\.1$ Options: case insensitive Assert position at the beginning of the string «^» Match a single character present in the list below «[+-]?» Between zero and one times, as many times as possible, giving back as needed (greedy) «?» The character “+” «+» The character “-” «-» Match a single character in the range between “0” and “9” «6» Between one and 3 times, as many times as possible, giving back as needed (greedy) «» Match the regular expression below «(. 6)*» Between zero and unlimited times, as many times as possible, giving back as needed (greedy) «*» Match the character “,” literally «,?» Between zero and one times, as many times as possible, giving back as needed (greedy) «?» Match a single character in the range between “0” and “9” «6» Exactly 3 times «» Match the character “.” literally «\.» Match a single character in the range between “0” and “9” «4» Exactly 2 times «» Assert position at the end of the string (or before the line break at the end of the string, if any) «$» 
1,432.01 456.56 654,246.43 432 321,543 

Не будет соответствовать

454325234.31 324,123.432 . 312,.32 123,.23 

десятичное обязательное (два десятичных знака)

Визуализация регулярных выражений

Демоверсия Debuggex

Разъяснение:

number (decimal optional) ^[+-]?7(. 1)*(?:\.3)?$ Options: case insensitive Assert position at the beginning of the string «^» Match a single character present in the list below «[+-]?» Between zero and one times, as many times as possible, giving back as needed (greedy) «?» The character “+” «+» The character “-” «-» Match a single character in the range between “0” and “9” «3» Between one and 3 times, as many times as possible, giving back as needed (greedy) «» Match the regular expression below «(. 8)*» Between zero and unlimited times, as many times as possible, giving back as needed (greedy) «*» Match the character “,” literally «,?» Between zero and one times, as many times as possible, giving back as needed (greedy) «?» Match a single character in the range between “0” and “9” «3» Exactly 3 times «» Match the regular expression below «(?:\.9)?» Between zero and one times, as many times as possible, giving back as needed (greedy) «?» Match the character “.” literally «\.» Match a single character in the range between “0” and “9” «1» Exactly 2 times «» Assert position at the end of the string (or before the line break at the end of the string, if any) «$» 
1,432.01 456.56 654,246.43 324.75 

Не будет соответствовать:

1,43,2.01 456, 654,246 324.7523 

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

Визуализация регулярных выражений

Демоверсия Debuggex

Разъяснение:

 Matches Numbers Separated by , or . ^(\d+(.|,))+(\d)+$ Options: case insensitive Match the regular expression below and capture its match into backreference number 1 «(\d+(.|,))+» Between one and unlimited times, as many times as possible, giving back as needed (greedy) «+» Note: You repeated the capturing group itself. The group will capture only the last iteration. Put a capturing group around the repeated group to capture all iterations. «+» Match a single digit 0..9 «\d+» Between one and unlimited times, as many times as possible, giving back as needed (greedy) «+» Match the regular expression below and capture its match into backreference number 2 «(.|,)» Match either the regular expression below (attempting the next alternative only if this one fails) «.» Match any single character that is not a line break character «.» Or match regular expression number 2 below (the entire group fails if this one fails to match) «,» Match the character “,” literally «,» Match the regular expression below and capture its match into backreference number 3 «(\d)+» Between one and unlimited times, as many times as possible, giving back as needed (greedy) «+» Note: You repeated the capturing group itself. The group will capture only the last iteration. Put a capturing group around the repeated group to capture all iterations. «+» Match a single digit 0..9 «\d» 

Не будет соответствовать:

1,.2 1234,12345.5467. ,125 ,.234 123,.1245. 

Примечание: оберните либо в группу, а затем просто потяните группу, сообщите мне, если вам нужно больше деталей.

Описание: Этот тип RegEx работает с любым языком (PHP, Python, C, C ++, C #, JavaScript, jQuery и т. Д.). Эти регулярные выражения хороши для валюты в основном.

Добавьте запятую в диапазон, который может находиться перед точкой:

И это регулярное выражение:

Будет соответствовать только

. 01 ,,1,.01 12. 01 # /( # (?:\d,?) Matches a Digit followed by a optional comma # + And at least one or more of the previous # \d Followed by a digit (To prevent it from matching `1234,.123`) # \.? Followed by a (optional) dot # in case a fraction is mandatory, remove the `?` in the previous section. # 7* Followed by any number of digits --> fraction? replace the `*` with a `+` # )/ 

Вы можете использовать это регулярное выражение: –

Объяснение: –

/( (?:7+,)* # Match 1 or more repetition of digit followed by a `comma`. # Zero or more repetition of the above pattern. 6+ # Match one or more digits before `.` (?: # A non-capturing group \. # A dot 6+ # Digits after `.` )? # Make the fractional part optional. )/ 

С помощью sscanf может использоваться плавающий по умолчанию (% f).

Тем не менее, это не разбивает части на массив. Он просто анализирует поплавок.

Подход регулярного выражения:

Вот большое рабочее регулярное выражение. Это принимает числа с запятыми и десятичными знаками.

Источник

Читайте также:  What is concurrent list in java
Оцените статью