🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
正则表达式是用于匹配字符串中字符组合的模式。在 JavaScript中,正则表达式也是对象。这些模式被用于 RegExp 的 exec 和 test 方法, 以及 String 的 match、replace、search 和 split 方法。 本章介绍 JavaScript正则表达式。 #### 创建一个正则表达式 你可以使用以下两种方法之一构建一个正则表达式: 使用一个正则表达式字面量,其由包含在斜杠之间的模式组成,如下所示: ~~~ /* /pattern/flags */ const regex = /ab+c/; const regex = /^[a-zA-Z]+[0-9]*\W?_$/gi; ~~~ 在加载脚本后,正则表达式字面值提供正则表达式的编译。当正则表达式保持不变时,使用此方法可获得更好的性能。 或者调用RegExp对象的构造函数,如下所示: ~~~ /* new RegExp(pattern [, flags]) */ let regex = new RegExp("ab+c"); let regex = new RegExp(/^[a-zA-Z]+[0-9]*\W?_$/, "gi"); let regex = new RegExp("^[a-zA-Z]+[0-9]*\W?_$", "gi"); ~~~ 使用构造函数提供正则表达式的运行时编译。使用构造函数,当你知道正则表达式模式将会改变,或者你不知道模式,并从另一个来源,如用户输入。 编写一个正则表达式的模式 一个正则表达式模式是由简单的字符所构成的,比如`/abc/`, 或者是简单和特殊字符的组合,比如` /ab*c/` 或` /Chapter (\d+)\.\d*/`。后者用到了括号,它在正则表达式中可以被用作是一个记忆设备。这一部分正则所匹配的字符将会被记住,在后面可以被利用。正如使用括号的子字符串匹配 JS中每个RegExp对象实例有两个方法,分别是:exec()与test()。这两个方法运行逻辑几乎等价,但是exec要复杂些,匹配失败返回null,匹配成功它将返回一个数组, 数组第一个元素是匹配整个正则的内容,之后的元素是正则中捕获组的匹配(注:使用非捕获组可以获得微弱的性能优势)举个栗子: ~~~ //捕获组() var pattern1 = /(www)\.(baidu)\.(com)/i //非捕获组(?:) var pattern2 = /(?:www)\.(?:baidu)\.(?:com)/i var str = 'www.baidu.com' pattern1.exec(str) //返回数组["www.baidu.com", "www", "baidu", "com"] pattern2.exec(str) //返回数组["www.baidu.com"] ~~~