Skip to content

正则表达式

[!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()  使用表达式来搜索匹配,然后返回匹配的位置

    js
    var str = "Visit W3School!";
    var n = str.search(/w3school/i);  // 搜索字符串中大小写不敏感的 "w3school" 
    
    ---
    n = 6
  • replace()  返回模式被替换处修改后的字符串

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!");  // 省略了修饰符

---
true

exec()

返回已找到的文本,如果未找到匹配,则返回 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