Javascript match return null

match

Если регулярное выражение без флага «g», то возвращает такое же результат, как regexp.exec(str).

Если же для регулярного выражения указан флаг «g», то метод возвращает массив, содержащий все совпадения.

Если совпадений нет, то метод возвращает не пустой массив, а null .

Замечания

  • Если вы хотите только проверить, совпадает ли строка с регулярным выражением — используйсте regexp.test(string).
  • Если вам нужно только первое совпадение — вам может лучше подойти regexp.exec(string)

Пример без глобального поиска

В следующем примере match используется для поиска строки «Глава», за которой идет 1 или групп из цифр с последующей точкой.

str = "За информацией обратитесь: Глава 3.4.5.1"; re = /глава (\d+(\.\d)*)/i found = str.match(re) document.write(found)

Возвратит массив из трех элементов:

  1. «Глава 3.4.5.1» — полное совпадение с регулярным выражением /глава (\d+(\.\d)*)/i ,
  2. «3.4.5.1» — первая скобка в совпадении,
  3. «.1» — вторая скобка в совпадении

Пример с глобальным поиском

При глобальном поиске регультат match — просто массив всех совпадений (и null , если их нет).

str = "За информацией обратитесь: Глава 3.4.5.1, Глава 7.5"; re = /глава (\d+(\.\d)*)/ig found = str.match(re) alert(found)

Выведет массив из двух элементов:

Читайте также:  Java object get class type

Скобки при таком поиске не учитываются.

Если вам нужен глобальный поиск с учетом скобок — используйте многократный вызов exec.

Как сделать разбивку числа на тысячные группы (по 3 цифры)?

Рецепт от Джеффри Фриддла:

'1234567890'.replace(/(\d)(?=(\d\d\d)+(?!\d))/g, '$1,')

Добрый день!
Подскажите, пожалуйста:
1. у меня есть js-файл в котором прописано значение переменной, определяющее изображение: var i_cloud_image7 ;

2. а мне нужно, что бы у меня была переменная такая: var i_cloud_image7 = «_1_sun_cl.png»;

3. т.е. мне нужно только значение «название изображения» и все. как это реализовать на js?

Ты можеш сразу после
var i_cloud_image7 = «»;
дописать
i_cloud_image7 = «_1_sun_cl.png»;
тем самым переопределив i_cloud_image7, либо вместо строки
var i_cloud_image7 = «»;
вставить
var i_cloud_image7 = «_1_sun_cl.png»;

Такая проблема.
Есть строка «(+89978)»;
Как узнать есть в ней знак «+»?
.match(«+»); — не работает;
.match(«\+»); — не работает;
.match(«/\+/»); — не работает;

Есть строка «(+89978)»;
.match(«/^[+]+\d*[.]+\d*/»);
смысл строки такой — если с начала строки идет один +, а за ним любое число цифр, может среди них быть точка и потом снова цифры
В [] все спец символы являются литералами если идут в начале описания диапазона.

не надо вводить кавычки, это же regExp, а не строка!

Помогите разобраться с регулярным выражением:

Есть стока sss = «milkbox[555]»;
Нужно вырезать 555 в чистом виде.
Делаю sss.match(/\[.*?\]/i);
Получается [555]

Подскажите пожалуйста, как исправить рег.выр что получилось 555

// Просто ищем первые попавшиеся цифры (одну и более) "milkbox[555]".match(/\d+/) // ["555"]

А можно ли передать в match() переменную?

var r='\w'; var s='privet'; alert(s.match(r));

Сам себе же и отвечаю — обратный слэш надо экранировать

Ну а как туда еще добавить параметр «без учета регистра — i»

Честно, для такого сайта тупо написано, все сжато и нихрена не понятно. Понятно только то что есть такая функция в JS, аналог регулярных выражений в PHP, и все. А как использовать ее никто и не понял. Можно было по подробней развить эту тему. Конечно вы авторы не я, но нафиг надо такими статьями поисковик засорять.

Статья оформлена не очень, нет описания что эта функция делает (нормального описания а не пародии на него), для новичка примеры не дают никакой полезной информации, хотелось бы что-нибудь базовое, как строить навороченные RegExp-ы рассматривается в другой статье.

в строке есть буквы и цифры
делаю match(/\d+\.\d* умение/ig)
находит: 1.43 умение, 4.56 умение, 4.5 умение, а 0 умение не находит?
Как сделать чтоб находило все?

у меня есть сайт dns-ip.ru хочу прикрутить там парсилку для ip можно ли это сделать как-то через regexp ?

text.match(/\d\.\d\.\d\.\d/)
достаточно для «парсилки ip» в большинстве случаев

Здесь автор говорить что «var result» это массив, но как это массив у него ж нет текста, и поставил его в цикл с «.length» как «.length» может распознать сколько символов в «result» если у него нет ни каких символов

var testStr = «Вчера я открыл 5 сайтов:. ru, ru, .com, spuper-site ru и Biggsite .Ru но вообще, мне больше нравиться домен в зоне .ru»;
var regV = /\.ru/gi;
var result = testStr.match(regV);
for (var i = 0; i < result.length; i++)document.write(result[i] + "
«);
>

строка «text_123_»
match(/_(\d)_/) находит «_123_»
но в match(/_(\d)_/).[1] тусуется только «1»
когда делаешь match(/_(\d+)_/) тогда появляется 123
почему он находит всё но пихает только «1»
это баг или нет?

разобралси там было
_+(\d)+_+ так вот
надо было в скобку этот плюсик
т.е. что находит и что запихивает в результат — это 2 разные вещи
а мне регтестер какой то показал что всё ок, там всё прямо сразу
повёлся

Как найти сроку начиная с = и заканчивая символом &

Нахожу строку, начиная с = и заканчивая &, но = и & входят в массив полученных данных

var re1 = /=.+?&/g; var newStr1 = string.match(re1); alert(newStr1);

Источник

String.prototype.match()

The match() method retrieves the result of matching a string against a regular expression.

Try it

Syntax

Parameters

A regular expression object, or any object that has a Symbol.match method.

If regexp is not a RegExp object and does not have a Symbol.match method, it is implicitly converted to a RegExp by using new RegExp(regexp) .

If you don’t give any parameter and use the match() method directly, you will get an Array with an empty string: [«»] , because this is equivalent to match(/(?:)/) .

Return value

An Array whose contents depend on the presence or absence of the global ( g ) flag, or null if no matches are found.

  • If the g flag is used, all results matching the complete regular expression will be returned, but capturing groups are not included.
  • If the g flag is not used, only the first complete match and its related capturing groups are returned. In this case, match() will return the same result as RegExp.prototype.exec() (an array with some extra properties).

Description

The implementation of String.prototype.match itself is very simple — it simply calls the Symbol.match method of the argument with the string as the first parameter. The actual implementation comes from RegExp.prototype[@@match]() .

  • If you need to know if a string matches a regular expression RegExp , use RegExp.prototype.test() .
  • If you only want the first match found, you might want to use RegExp.prototype.exec() instead.
  • If you want to obtain capture groups and the global flag is set, you need to use RegExp.prototype.exec() or String.prototype.matchAll() instead.

For more information about the semantics of match() when a regex is passed, see RegExp.prototype[@@match]() .

Examples

Using match()

In the following example, match() is used to find «Chapter» followed by one or more numeric characters followed by a decimal point and numeric character zero or more times.

The regular expression includes the i flag so that upper/lower case differences will be ignored.

const str = "For more information, see Chapter 3.4.5.1"; const re = /see (chapter \d+(\.\d)*)/i; const found = str.match(re); console.log(found); // [ // 'see Chapter 3.4.5.1', // 'Chapter 3.4.5.1', // '.1', // index: 22, // input: 'For more information, see Chapter 3.4.5.1', // groups: undefined // ] 

In the match result above, ‘see Chapter 3.4.5.1’ is the whole match. ‘Chapter 3.4.5.1’ was captured by (chapter \d+(\.\d)*) . ‘.1’ was the last value captured by (\.\d) . The index property ( 22 ) is the zero-based index of the whole match. The input property is the original string that was parsed.

Using global and ignoreCase flags with match()

The following example demonstrates the use of the global flag and ignore-case flag with match() . All letters A through E and a through e are returned, each its own element in the array.

const str = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; const regexp = /[A-E]/gi; const matches = str.match(regexp); console.log(matches); // ['A', 'B', 'C', 'D', 'E', 'a', 'b', 'c', 'd', 'e'] 

Using named capturing groups

In browsers which support named capturing groups, the following code captures «fox» or «cat» into a group named animal :

const paragraph = "The quick brown fox jumps over the lazy dog. It barked."; const capturingRegex = /(?animal>fox|cat) jumps over/; const found = paragraph.match(capturingRegex); console.log(found.groups); // 

Using match() with no parameter

const str = "Nothing will come of nothing."; str.match(); // returns [""] 

Using match() with a non-RegExp implementing @@match

If an object has a Symbol.match method, it can be used as a custom matcher. The return value of Symbol.match becomes the return value of match() .

const str = "Hmm, this is interesting."; str.match( [Symbol.match](str)  return ["Yes, it's interesting."]; >, >); // returns ["Yes, it's interesting."] 

A non-RegExp as the parameter

When the regexp parameter is a string or a number, it is implicitly converted to a RegExp by using new RegExp(regexp) .

const str1 = "NaN means not a number. Infinity contains -Infinity and +Infinity in JavaScript."; const str2 = "My grandfather is 65 years old and My grandmother is 63 years old."; const str3 = "The contract was declared null and void."; str1.match("number"); // "number" is a string. returns ["number"] str1.match(NaN); // the type of NaN is the number. returns ["NaN"] str1.match(Infinity); // the type of Infinity is the number. returns ["Infinity"] str1.match(+Infinity); // returns ["Infinity"] str1.match(-Infinity); // returns ["-Infinity"] str2.match(65); // returns ["65"] str2.match(+65); // A number with a positive sign. returns ["65"] str3.match(null); // returns ["null"] 

This may have unexpected results if special characters are not properly escaped.

This is a match because . in a regex matches any character. In order to make it only match specifically a dot character, you need to escape the input.

Specifications

Browser compatibility

BCD tables only load in the browser

See also

Found a content problem with this page?

This page was last modified on Apr 24, 2023 by MDN contributors.

Your blueprint for a better internet.

MDN

Support

Our communities

Developers

Visit Mozilla Corporation’s not-for-profit parent, the Mozilla Foundation.
Portions of this content are ©1998– 2023 by individual mozilla.org contributors. Content available under a Creative Commons license.

Источник

JavaScript String match()

The match() method matches a string against a regular expression ** The match() method returns an array with the matches. The match() method returns null if no match is found.

Note

See Also:

Syntax

Parameters

Parameter Description
match Required.
The search value.
A regular expression (or a string that will be converted to a regular expression).

Return Values

The Difference Between
String match() and String search()

The match() method returns an array of matches.

The search() method returns the position of the first match.

Regular Expression Search Methods

In JavaScript, a regular expression text search, can be done with different methods.

With a pattern as a regular expression, these are the most common methods:

Example Description
text.match(pattern) The String method match()
text.search(pattern) The String method search()
pattern.exec(text) The RexExp method exec()
pattern.test(text) The RegExp method test()

Browser Support

match() is an ECMAScript1 (ES1) feature.

ES1 (JavaScript 1997) is fully supported in all browsers:

Chrome Edge Firefox Safari Opera IE
Yes Yes Yes Yes Yes Yes

Источник

Оцените статью