📜  Javascript字符串match()

📅  最后修改于: 2020-09-27 07:09:19             🧑  作者: Mango

JavaScript String match()方法返回将字符串与正则表达式匹配的结果。

match()方法的语法为:

str.match(regexp)

在这里, str是一个字符串。


match()参数

match()方法采用:

  • 正则表达式 -正则表达式对象(参数是隐式转换为RegExp ,如果它是一个非RegExp对象)

注意:如果不提供任何参数, match()将返回[""]


从match()返回值
  • 返回一个包含匹配项的Array ,每个匹配项一项。
  • 如果找不到匹配项,则返回null

示例1:使用match()
const string = "I am learning JavaScript not Java.";
const re = /Java/;

let result = string.match(re);
console.log("Result of matching /Java/ :");
console.log(result);

const re1 = /Java/g;
let result1 = string.match(re1);

console.log("Result of matching /Java/ with g flag:")
console.log(result1);

输出

Result of matching /Java/ :
[
  'Java',
  index: 14,
  input: 'I am learning JavaScript not Java.',
  groups: undefined
]
Result of matching /Java/ with g flag:
[ 'Java', 'Java' ]

在这里,我们可以看到,不使用g标志,结果仅获得第一个匹配项,但包含诸如索引,输入和组之类的详细信息。

注意 :如果正则表达式不包含g标志,则str.match()将仅返回类似于RegExp.exec()的第一个匹配项。返回的项目还将具有以下附加属性:

  • groups命名捕获组的对象,具有键作为名称,值作为捕获的匹配项。
  • index查找结果的搜索索引。
  • input -搜索字符串的副本。

示例2:匹配字符串的节
const string = "My name is Albert. YOUR NAME is Soyuj.";

// expression matches case-insensitive "name is"+ any alphabets till period (.)
const re = /name\sis\s[a-zA-Z]+\./gi;

let result = string.match(re);
console.log(result); // [ 'name is Albert.', 'NAME is Soyuj.' ]

// using named capturing groups
const re1 = /name\sis\s(?[a-zA-Z]+)\./i;
let found = string.match(re1);

console.log(found.groups); // {name: "Albert"}

输出

[ 'name is Albert.', 'NAME is Soyuj.' ]
{name: "Albert"}

在这里,我们使用了正则表达式来匹配字符串的特定部分。我们还可以使用上面显示的语法捕获比赛中的某些组。


推荐读物: JavaScript String matchAll()