# RegExp

# 正则表达式中特殊字符的含义

字符 含义
. 匹配单个字符,行结束符除外
\d 等价于[0-9]
\D 匹配任意一个不是阿拉伯数字的字符
\w 等价于[A-Za-z_0-9]
\W 匹配不是...
\s 匹配一个空白符,包括空格、制表符、换页符、换行符和其他 Unicode 空格
\t 匹配一个tab
\r 匹配一个回车
\n 匹配一个换行
\ 匹配下一个字符
[^0-9] 匹配任意不在括号内的字符
\b 匹配一个单词边界,如一个字母与一个空格之间
(x) 匹配 x 并且捕获匹配项
x? 匹配 x 0或1次
x? 匹配 x 0或1次
x(?=y) 只有当 x 后面紧跟着 y 时,才匹配 x
x(?!y) 只有当 x 后面不是紧跟着 y 时,才匹配 x

# 原生方法

# RegExp.prototype.exec(str)

在一个指定字符串中执行一个搜索匹配,返回一个结果数组或 null

# RegExp.prototype.test(str)

方法执行一个检索,用来查看正则表达式与指定的字符串是否匹配。返回 true 或 false

# RegExp.prototype.toString()

let regex = new RegExp('a+b+c', 'g')
console.log(regex.toString()) // /a+b+c/g
1
2

# String.prototype.match(regex)

同regex.exec,返回数组

# String.prototype.replace(regex, replacedWith)

'abc'.replace(/a/, 'A');
1

# String.prototype.search(regex)

-1表示未搜索到,0表示搜索到,同regex.test


# 例题

/* 将
    <a href="{href}">{text}</a>
根据
    {href: '//www.taobao.com', text: '淘宝网'}
填充为对应的a标签
*/


// your code here

1
2
3
4
5
6
7
8
9
10

# 我的解答

let regex = /{(\w+)\}/g
let source = {href: '//www.taobao.com', text: '淘宝网'}
let str = '<a href="{href}">{text}</a>'

console.log(str.replace(regex, function (holeWord, word) {
  return source[word]
}))
1
2
3
4
5
6
7