首页 > 编程语言 >JavaScript中String的match方法详解

JavaScript中String的match方法详解

时间:2022-11-27 10:34:22浏览次数:43  
标签:返回 Infinity String 正则表达式 JavaScript var prototype match


 

String.prototype.match()

** String.prototype.match()方法返回通过一个正则表达式匹配到的字符串结果。**

​​var='The quick brown fox jumps over the lazy dog. It barked.';​​
​​var=/[A-Z]/g;​​
​​var=.match(regex);​​

​​console.log(found);​​
​​// 输出: Array ["T", "I"]​​

语法

str.match(regexp)

参数

regexp
一个正则表达式对象。如果传递了一个非正则表达式对象,函数会执行new RegExp(obj)将他转换成一个字符串对象。如果没有传递任何参数,函数将返回空字符串数组:[“”]。

返回值

如果有匹配值,String.prototype.match()返回一个数组,这个数组的内容取决于正则表达式参数中是否有g修饰符。如果没有匹配值,返回null。
(1)如果正则表达式中有g修饰符。所有匹配到的值会按照数组格式被返回,不会返回捕获组。
(2)如果没有g修饰符。只有第一个匹配到的值会被返回,同时还会返回第一个匹配到的值内部的所有捕获组。在这种情况下,返回值会多包含以下几个属性:

  • groups:如果匹配值中包含捕获组,返回值中将包含捕获组信息的各项值。否则为undefined。
  • index:匹配值在整个字符串中的索引。
  • input:整个字符串。

描述

如果String.prototype.match()参数的正则表达式中没有包含g修饰符,str.match()将会和RegExp.prototype.exec()方法返回一样的结果。

  • 如果只想知道一个字符串是否匹配一个正则表达式,使用RegExp.prototype.test()。
  • 如果想使用一个包含g修饰符的正则表达式匹配中获得捕获组,使用RegExp. prototype.exec()。

示例

直接使用String.prototype.match()

下面的例子中,String.prototype.match()将会查找一个以”Chapter”开头的,其后跟随一个或多个数字字符,数字字符后跟随另个或多个’.+数字字符’。在下面代码中正则表达式中有i修饰符,所以整个正则表达式忽略大小写。

var='For more information, see Chapter 3.4.5.1';
var=/see (chapter \d+(\.\d)*)/i;
var=.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' ]
// 'see Chapter 3.4.5.1'是整个匹配项值.
// 'Chapter 3.4.5.1' 被捕获组'(chapter \d+(\.\d)*)'捕获.
// '.1' 被最后一个捕获组'(\.\d)捕获'.
// 'index'属性(值22)是第一个匹配字符在整个字符串中的索引位置.
// 'input'是整个字符串.

在String.prototype.match()中使用g修饰符

下面的例子中,参数正则表达式中包含g修饰符,结果将会返回所有被匹配的值。

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

在String.prototype.match()中不传入参数

var="Nothing will come of nothing.";
str.match();// 返回 [""]

一个非正则表达式作为参数

当一个参数是一个字符串或一个数字,函数内部将会用new RegExp(obj)将他转换成正则表达式对象。如果参数是一个包含“+”符号的正数,则RegExp()函数将会忽略这个“+”符号。

var="NaN means not a number. Infinity contains -Infinity and +Infinity in JavaScript.",
="My grandfather is 65 years old and My grandmother is 63 years old.",
="The contract was declared null and void.";
str1.match("number");// "number" 是个字符串,返回["number"]
str1.match(NaN);// NaN 的数据类型是数字,返回 ["NaN"]
str1.match(Infinity);// Infinity 的数据类型是数字,返回 ["Infinity"]
str1.match(+Infinity);// 返回 ["Infinity"]
str1.match(-Infinity);// 返回 ["-Infinity"]
str2.match(65);// 返回 ["65"]
str2.match(+65);// “+”符号将会被忽略,返回 ["65"]
str3.match(null);// 返回 ["null"]



标签:返回,Infinity,String,正则表达式,JavaScript,var,prototype,match
From: https://blog.51cto.com/u_15689678/5889755

相关文章

  • 面向对象的JavaScript框架 MooTools
    MooTools是一个简洁,模块化,面向对象的JavaScript框架。它能够帮助你更快,更简单地编写可扩展和兼容性强的JavaScript代码。Mootools从Prototype.js中汲取了许多有益的设计理......
  • StringBuilder_append方法
      /*总结:StringBuilder类中的reverse方法:反转字符串的方法StringBuilder类中的append()方法:在括号内添加数据,并且返回给对象本身*/......
  • 运用StringBuilder类中的reverse来反转数组
      /*其实不转换为String也行,运用StringBuilder输出即可比自己定义的String来反转更加简单方便也可以一次性输出定义出来这个反转方法通过匿......
  • Javascript(笔记53) - promise - 3 几个关键问题
    如何改变Promise的状态?1)resolve(value):如果当前是pending 就会变为resolved(或fulfilled); 2)reject(reason):如果当前是pending 就会变为rejected; 3) 抛出异常:如......
  • javascript 执行上下文
    <script>//执行上下文,顺序执行到此出会产生一个全局的执行上下文(ECG),并把全局ECG放到ECS(执行上下文栈)中//VO:GO(globanobject)对浏览器而言,window即......
  • npm 打包报错JavaScript heap out of memory(亲测可行)
    解决办法:1.修改package.json加–max_old_space_size=81922.安装并执行increase-memory-limit//全局安装cnpminstall-gincrease-memory-limit//项目内运行increase-memory......
  • TypeScript/Javascript 泛型字典
    typescript是javaScript的超集,相当于把弱类型的js变成了强类型的语言,并且实现了封装(成员私有),更方便面向对象编程。然鹅,typescript并没有扩增原生JS的内容,比如:支持了import......
  • javascript面试题
    1.null和undefined区别首先Undefined和Null都是基本数据类型,这两个基本数据类型分别都只有一个值,就是undefined和null。undefined代表的含义是未定义,null代表......
  • 如何用JavaScripte和HTML 实现一整套的考试答题卡和成绩表
    相信在学校的你都有这样的体验,临近考试,要疯狂的“背诵”否则成绩单就要挂零,因为答题卡全部涂抹都是错的。那么毕业多年的你,没有了考试,有没有一丝怀念涂答题卡的时候,有没有......
  • Javascript(笔记52) - promise - 2 API和方法
    Promise 构造函数Promise(excutor){}1)executor 函数:执行器(resolve,reject)=>{}2)resolve 函数:内部定义成功时我们调用的函数value=>{}3)reject函数:内定定义失败时我们......