JavaScript RegExp

正则表达式

关于正则表达式的语法,可以参考 - Python 正则,这篇主要介绍在 JavaScript 中,正则的应用。


RegExp

RegExp 也是一个 JavaScript 的内置对象,它封装了一些处理正则的方法。

new RegExp() instanceof RegExp // true

test

/*
 new RegExp('a') 匹配规则
 test('abc') 匹配源 | 返回布尔值
*/

new RegExp('a').test('abc') // true
new RegExp('a').test('bcd') // false


/* 
 /.../ 是 RegExp 对象的简写,两者是等价的
*/

/a/.test('abc') // true
/a/.test('bcd') // false

exec

/b/.exec('abc') // ["b", index: 1, input: "abc"]

/*
 返回匹配的信息
 [0] 匹配内容
 [1] 首次匹配位置
 [2] 匹配源
*/

match

'abc'.match(/a/) // ["a", index: 0, input: "abc"]

/*
 match 和 exec 的作用是一样的,只是 match 是字符串方法,而 exec 是正则方法
*/

replace

'a'.replace(/\w/,'b') // b

/*
 替换,也是一个支持正则的字符串方法
*/

search

'cba'.search(/a/) // 2 

/*
 查找字符串位置,不存在返回 -1,可以看出是一个正常正则的 indexOf
*/

split

'a b   c'.split(/\s+/) // ['a','b','c'] | 裁剪

分组

/(a)(b)/.exec('ab') // ["ab", "a", "b", index: 0, input: "ab"]
'ab'.match(/(a)(b)/) // ["ab", "a", "b", index: 0, input: "ab"]

/*
 () 括号是特别的标示,不会影响正则匹配,括号的内容会单独返回出来,这种操作叫做分组
 exec 和 match 都支持分组功能
*/

符号

/*
 g 全局 | 匹配多次
*/
'a1a'.match(/a/g) // ['a','a'] | 默认只匹配一次


/*
 i 忽略大小写
*/
/a/.test('A') // true


/*
 m 多行匹配 | 即使文本换行了也能被匹配到
*/
/^1/.test('\n1') // false
/^1/m.test('\n1') // true
更多教程 HTML5 教程 CSS3 教程 JavaScript 教程 JQuery 教程 React.js 教程 Node.js 教程 Koa2 教程 Python 教程 Linux 教程