正则表达式能够方便我们匹配和验证的情景,下面向大家介绍在JavaScript中匹配正则表达式的函数。
1. match
MDN:match() 检索返回一个字符串匹配政策表达式的结果。
语法: str.match(refexp)
参数: 如果传入的不是正则,那么会隐式的使用 new RefExp(obj) 转为一个 正则。 没有传入任何参数将会返回一个字符串。
var str = 'adfadsfafadfadFADFASDFA'
var a = str.match(/[A-Z]/g)
输出:
a:['F', 'A', 'D', 'F', 'A', 'S', 'D', 'F', 'A']
var a = str.match(/[A-Z]/)
输出:
a:['F', index: 14, input: 'adfadsfafadfadFADFASDFA', groups: undefined]
0: "F"
groups: undefined
index: 14
input: "adfadsfafadfadFADFASDFA"
length: 1
[[Prototype]]: Array(0)
2. RegExp.prototype.exec()
exec() 方法在一个指定字符串中执行一个搜索匹配,返回一个数组或 null。
const a = /a/g
let astrs = 'abcdabcd';
let arrs = []
while((arrs = a.exec(astrs)) !== null) {
console.log(arrs[0], 'x');
/* 输出内容
a x
a x
*/
}
如果不进行循环,那么只会得到一个数组
let b = RegExp('a*', 'g');
b.exec('abcdabcd')
输出:
['a', index: 0, input: 'abcdabcd', groups: undefined]
MDN对返回值的解释: 如果匹配成功,exec() 方法返回一个数组(包含额外的属性 index 和 input ,参见下方表格),并更新正则表达式对象的 lastIndex 属性。完全匹配成功的文本将作为返回数组的第一项,从第二项起,后续每项都对应正则表达式内捕获括号里匹配成功的文本。
如果匹配失败,exec() 方法返回 null,并将 lastIndex 重置为 0 。
3. RegExp.prototype.test()
test() 方法执行一个检索,用来查看正则表达式与指定的字符串是否匹配。返回 true 或 false。
如果想知道一个正则表达式是否与指定的字符串匹配时,就可以使用 test()
let c = 'abc'
/a/.test(c)
输出:true
/d/.test(c)
输出:false
4. String.prototype.search()
search() 方法执行正则表达式和 String 对象之间的搜索匹配。
参数:正则对象。
返回值:匹配成功返回正则表达式在字符串中首次匹配项的索引;否则返回 -1。
var str = "hey JudE";
var re = /[A-Z]/g;
var re2 = /[.]/g;
console.log(str.search(re));
输出:4 只匹配到第一个
console.log(str.search(re2));
输出:-1
结语:在JavaScript中还有字符串方法 replace 和 split 可以匹配,这两个函数比较常用,这里就不多说了。如果觉得有什么问题,欢迎评论交流。