String.prototype.match() - JavaScript String 对象
String.prototype.match()
match()
方法检索返回一个字符串匹配正则表达式的的结果。
语法
str.match(regexp)
参数
regexp
一个正则表达式对象。如果传入一个非正则表达式对象,则会隐式地使用new RegExp(obj)
将其转换为一个RegExp
。如果你没有给出任何参数并直接使用match()方法,你将会得到一个包含空字符串的Array
:[""]。返回值
- 如果使用g标志,则将返回与完整正则表达式匹配的所有结果,但不会返回捕获组。
- 如果未使用g标志,则仅返回第一个完整匹配及其相关的捕获组(
Array
)。在这种情况下,返回的项目将具有如下所述的其他属性。
附加属性
如上所述,匹配的结果包含如下所述的附加特性。
groups
:一个捕获组数组或undefined
(如果没有定义命名捕获组)。index
:匹配的结果的开始位置input
:搜索的字符串.
Array
,其内容取决于global(g
)标志的存在与否,如果未找到匹配则为null
。描述
如果正则表达式不包含g
标志,str.match()
将返回与RegExp.exec()
.相同的结果。
参看:RegExp
方法
- 如果你需要知道一个字符串是否与一个正则表达式匹配
test()
。 - 如果你只是需要第一个匹配结果,你也可以使用
RegExp.exec()
。 - 如果你想要获得捕获组,并且设置了全局标志,你需要用
RegExp.exec()
。
示例
例子:使用match
在下例中,使用match
查找"Chapter
"紧跟着 1 个或多个数值字符,再紧跟着一个小数点和数值字符 0 次或多次。正则表达式包含i
标志,因此大小写会被忽略。
var str = 'For more information, see Chapter 3.4.5.1'; var re = /see (chapter \d+(\.\d)*)/i; var found = str.match(re); console.log(found); // logs [ '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' 属性是被解析的原始字符串。
例子:match
使用全局(global)和忽略大小写(ignore case)标志
下例展示了match
使用 global 和 ignore case 标志。A-E、a-e 的所有字母将会作为一个数组的元素返回。
var str = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'; var regexp = /[A-E]/gi; var matches_array = str.match(regexp); console.log(matches_array); // ['A', 'B', 'C', 'D', 'E', 'a', 'b', 'c', 'd', 'e']
使用match(),不传参数
var str = "Nothing will come of nothing."; str.match(); // returns [""]
一个非正则表达式对象作为参数
当参数是一个字符串或一个数字,它会使用new RegExp(obj)来隐式转换成一个RegExp
。如果它是一个有正号的正数,RegExp()方法将忽略正号。
var str1 = "NaN means not a number. Infinity contains -Infinity and +Infinity in JavaScript.", str2 = "My grandfather is 65 years old and My grandmother is 63 years old.", str3 = "The contract was declared null and void."; str1.match("number"); // "number" 是字符串。返回["number"] str1.match(NaN); // NaN的类型是number。返回["NaN"] str1.match(Infinity); // Infinity的类型是number。返回["Infinity"] str1.match(+Infinity); // 返回["Infinity"] str1.match(-Infinity); // 返回["-Infinity"] str2.match(65); // 返回["65"] str2.match(+65); // 有正号的number。返回["65"] str3.match(null); // 返回["null"]
鹏仔微信 15129739599 鹏仔QQ344225443 鹏仔前端 pjxi.com 共享博客 sharedbk.com
免责声明:我们致力于保护作者版权,注重分享,当前被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理!邮箱:344225443@qq.com)
图片声明:本站部分配图来自网络。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!
内容声明:本文中引用的各种信息及资料(包括但不限于文字、数据、图表及超链接等)均来源于该信息及资料的相关主体(包括但不限于公司、媒体、协会等机构)的官方网站或公开发表的信息。部分内容参考包括:(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供参考使用,不准确地方联系删除处理!本站为非盈利性质站点,本着为中国教育事业出一份力,发布内容不收取任何费用也不接任何广告!)