正则表达式
[!quote] 正则表达式 正则表达式 是构成搜索模式的字符序列,可以使搜索更强大
语法
js
/模式/修饰符 //可以没有修饰符模式
| 表达式 | 描述 |
|---|---|
| [abc] | 查找方括号之间的任何字符 |
| [0-9] | 查找任何从 0 至 9 的数字 |
| (x|y) | 查找由 | 分隔的任何选项【此处查找 x 或 y】 |
js
function myFunction() {
var str = "re, green, red, green, gren, gr, blue";
var patt1 = /(red|green)/g;
var result = str.match(patt1);
alert(result);
}
---
green,red,green| 元字符 | 描述 |
|---|---|
| \d | 查找数字 |
| \s | 查找空白字符 |
| \b | 匹配单词边界 |
| \uxxxx | 查找以十六进制数 xxxx 规定的 Unicode 字符 |
js
// 在单词的开头或结尾处对“W3”进行全局搜索
function myFunction() {
var str = "Visit W3Schools";
var patt1 = /\bW3/g;
var result = str.match(patt1);
alert(result);
}
---
W3| 量词 | 描述 |
|---|---|
| n+ | 匹配任何包含至少一个 n 的字符串 |
| n* | 匹配任何包含零个或多个 n 的字符串 |
| n? | 匹配任何包含零个或一个 n 的字符串 |
js
// 全局搜索“l”,后跟零个或多个“o”字符
function myFunction() {
var str = "Hellooo World! Hello W3School!";
var patt1 = /lo*/g;
var result = str.match(patt1);
alert(result);
}
---
l,looo,l,l,lo,l修饰符
| 修饰符 | 描述 |
|---|---|
| i | 执行对大小写不敏感的匹配 |
| g | 执行全局匹配【查找所有匹配而非在找到第一个匹配后停止】 |
| m | 执行多行匹配 |
作用
正则表达式常用于两个字符串方法:
search()使用表达式来搜索匹配,然后返回匹配的位置jsvar str = "Visit W3School!"; var n = str.search(/w3school/i); // 搜索字符串中大小写不敏感的 "w3school" --- n = 6replace()返回模式被替换处修改后的字符串
js
var str = "Visit Microsoft!";
var res = str.replace(/microsoft/i, "W3School");
---
res = Visit W3School!方法
test()
根据结果返回 true 或 false
js
var boolean = /e/.test("The best things in life are free!"); // 省略了修饰符
---
trueexec()
返回已找到的文本,如果未找到匹配,则返回 null
js
/e/.exec("The best things in life are free!");
---
e性能
减少循环中的活动
减少 DOM 访问
js// 假如要访问某个DOM元素若干次,那么只访问一次,并把它作为本地变量来使用 var obj; obj = document.getElementById("demo"); obj.innerHTML = "Hello";缩减 DOM 规模【尽量保持较少的 DOM 数量】
把 js 脚本 放在页面底部,使浏览器先加载页面
避免使用 with