关于“JavaScript 正则表达式与字符串查找方法”的攻略,可以分为以下三部分进行讲解。
一、正则表达式
1.1 基本语法
正则表达式是一个字符串模式,用于匹配和操作文本。在 JavaScript 中,可以使用两种方式创建正则表达式:字面量和构造函数。
字面量的形式为 /pattern/flags
,其中 pattern
表示匹配的模式,flags
表示正则表达式的修饰符。
例如:
let reg = /abc/gi; // 匹配包含 abc 的字符串,全局、不区分大小写
构造函数的形式为 new RegExp(pattern, flags)
,其中 pattern
和 flags
与字面量中的含义相同。
例如:
let reg = new RegExp('abc', 'gi'); // 匹配包含 abc 的字符串,全局、不区分大小写
1.2 常用方法
在 JavaScript 中,常用的正则表达式方法有 test()
和 exec()
。它们都是 RegExp 对象的方法。
test()
方法用于测试字符串是否匹配某个正则表达式,返回布尔值。例如:
let reg = /abc/gi;
let str = 'abcdefg';
console.log(reg.test(str)); // true
exec()
方法用于在字符串中查找匹配的内容,返回一个数组,该数组的第 0 项是整个正则表达式匹配到的内容,后续项是正则表达式中每个捕获组所匹配到的内容。如果没有找到匹配的内容,则返回 null。例:
let reg = /abc/gi;
let str = 'abcdefg abc';
console.log(reg.exec(str)); // ["abc", "abc"]
二、字符串查找方法
2.1 indexOf()
indexOf()
方法用于在字符串中查找给定子字符串的位置,如果找到,返回该子字符串在字符串中首次出现的索引;如果没找到,返回 -1。例:
let str = 'hello world';
console.log(str.indexOf('world')); // 6
2.2 lastIndexOf()
lastIndexOf()
方法与 indexOf()
方法类似,但是是从字符串的末尾向前查找。例:
let str = 'hello world';
console.log(str.lastIndexOf('o')); // 7
2.3 includes()
includes()
方法用于判断字符串中是否包含指定的子字符串,返回布尔值。例:
let str = 'hello world';
console.log(str.includes('world')); // true
三、示例说明
3.1 正则表达式示例
例如,我们要从一个字符串中匹配所有的数字,并把它们分别打印出来。可以使用正则表达式来实现。如下所示:
let str = 'abc123xyz456';
let reg = /\d+/g;
let result = null;
while ((result = reg.exec(str))) {
console.log(result[0]);
}
上述代码中,/\d+/g
表示匹配字符串中的数字,result[0]
表示匹配到的整个数字。
3.2 字符串查找方法示例
例如,我们要在一个文章列表中查找包含指定关键字的文章,并将它们高亮显示。可以使用 indexOf()
和字符串的截取方法 substring()
来实现。如下所示:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>文章列表</title>
<style>
.highlight {
background-color: yellow;
}
</style>
</head>
<body>
<ul>
<li>JavaScript 正则表达式与字符串查找方法</li>
<li>CSS 媒体查询与响应式设计</li>
<li>HTML5 强化型表单元素</li>
</ul>
<script>
let keyword = '正则表达式';
let ul = document.querySelector('ul');
let lis = ul.getElementsByTagName('li');
for (let i = 0, len = lis.length; i < len; i++) {
let li = lis[i];
if (li.innerText.indexOf(keyword) !== -1) {
li.innerHTML = li.innerHTML.replace(keyword, '<span class="highlight">' + keyword + '</span>');
}
}
</script>
</body>
</html>
上述代码中,我们使用 indexOf()
方法查找每个文章标题中是否包含指定的关键字,如果包含,使用 replace()
方法将关键字替换为带有高亮样式的关键字。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JavaScript 正则表达式与字符串查找方法 - Python技术站