28.判断字符串中是否包含某个、某些字符串
leezozz 5/6/2023 笔记
# 方法一:indexOf()
var a = 'abc'
var target1 = 'a'
var target2 = 'c'
if(a.indexOf(target1) !== -1 && a.indexOf(target2) !== -1) {
console.log('字符同时包含a、c') // 字符同时包含a、c
}
1
2
3
4
5
6
2
3
4
5
6
# 方法二:search()
语法:
str.search(regexp)
1
参数:
regexp:一个正则表达式(regular expression)对象。如果传入一个非正则表达式对象regexp,则会使用 new RegExp(regexp) 隐式地将其转换为正则表达式对象。
返回值:
如果匹配成功,则返回正则表达式在字符串中首次匹配项的索引;否则,返回-1
var a = 'abc'
var target1 = 'a'
var target2 = 'c'
if(a.search(target1) !== -1 && a.search(target1) !== -1) {
console.log('字符同时包含a、c') // 字符同时包含a、c
}
1
2
3
4
5
6
2
3
4
5
6
# 方法三:match()
语法:
str.match(regexp)
1
参数:
- 如果regexp不是RegExp对象并且对象上无Symbol.match方法,则会使用new RegExp(regexp) 将其隐式地转换为RegExp
- 如果你没有给出任何参数并直接使用 match() 方法,你将会得到一个包含空字符串的数组:[""],因为这等价于 match(/(?😃/)。
返回值: - 如果使用 g 标志,则将返回与完整正则表达式匹配的所有结果
- 如果未使用 g 标志,则仅返回第一个完整匹配及其相关的捕获组(Array)
var a = '123'
var target = RegExp(/3/)
if(a.match(target)) {
console.log('字符包含3') // 字符包含3
}
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']
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
# RegExp对象方法 (正则)
正则表达式是用于匹配字符串中字符组合的模式。在JavaScript中,正则表达式也是对象。这些模式被用于RegExp的exec和test方法,以及String的match、matchAll、replace、search和split方法。
# 方法四:test()
test() 方法用于检索字符串中指定的值。返回 true 或 false。
语法:regexObj.test(str)
var str = "123";
var reg = RegExp(/3/);
console.log(reg.test(str)); // true
// 验证字符串是否同时存在'jack'和'jame' 【注意:字符串中出现 \n 会一直返回false】
// /^(?=.*jack)(?=.*jame).*$/
var str1 = 'ajackidjames'
var reg = /^(?=.*jack)(?=.*jame).*$/
console.log(reg.test(str1)) // true
// /a.*b|b.*a/ 其中.*表示任意数量的任意字符。这个正则表达式的意思是匹配字符串中包含'a'后面跟着任意字符再跟着'b',或者是包含'b'后面跟着任意字符再跟着'a'的字符串。
const str1 = 'abc/n';
console.log(/a.*b|b.*a/.test(str1)); // true
const str2 = 'acde';
console.log(/a.*b|b.*a/.test(str2)); // false
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 方法五:exec()
exec() 方法在一个指定字符串中执行一个搜索匹配。返回一个结果数组或 null。
var str = "123";
var reg = RegExp(/3/);
var regs = RegExp(/34/);
console.log(reg.exec(str)) // ['3', index: 2, input: '123', groups: undefined]
console.log(regs.exec(str)) // null
1
2
3
4
5
2
3
4
5