1.创建
// 方法一
let reg = /{{\$[0-9]}}/;
// 方法二
let reg2 = new RegExp("{{\$[0-9]}}");
基本用法:
- str.match(reg); 返回一个数组,即所有匹配的选项
- str.search(reg); 返回第一次出现时的下表
- reg.test(str); 返回str中是否有匹配reg的字符串
1){}表示数目
var reg = /a{3}/; //表示有3个连续的a
console.log(reg.test("aaaadfsdf"));
reg = /(ab){3}/; //表示有连续的3个ab
console.log(reg.test("aasdfabababab"));
reg = /(b){1, 3}/; //表示有连续的1到3个ab
console.log(reg.test("aasdfabababab"));
reg = /(ab){1,}/; //表示有连续的1个以上的ab
console.log(reg.test("aasdbab"));
(2)+表示至少一个 相当于{1,}
*表示0个或多个 相当于 {0,}
? 表示0个或一个
(3)^a表示以a开头 a$表示以a结尾
^a$ 表示以a开头和结尾即只有一个a
(4) .表示任意字符
reg = /./;
var reg1 = new RegExp(".");
reg = /\./; //表示匹配 .
var reg2 = new RegExp("\\."); //表示匹配 . 因为构造函数里面是字符串,一个\表示转义
console.log(reg2.test(".asfsdf"));
(5)几种特殊情况
\w 表示字母、数字、_ 相当于[A-z0-9_]
\W 除了字母、数字、_ 相当于[^A-z0-9_]
\d 表示数字 相当于 [0-9]
\D 表示除了数字 相当于 [^0-9]
\s 表示空格
\S 表示除了空格
\b 表示单词边界 "child" 返回true "children" 返回false
\B 表示除了单词边界
(6)匹配开头或者结尾空格
reg = /^\s* | \s*$/g;
面试题:解析{{}}中的js语句
输入:
"<div>{{$0}}({{$1}})</div>", ["好未来", "Tal"]
输出:
<div>好未来(Tal)</div>
相应代码
function fun(s, arr) {
let arrAll = s.split(',');
console.log(arr)
let res = arrAll[0];
let reg = /{{\$[0-9]}}/;
let i = 0;
while (reg.test(res)) {
res = res.replace(reg, arr[i]);
i++;
}
console.log(res);
}
console.log('---------');
fun("<div>{{$0}}({{$1}})</div>", ["好未来", "Tal"]);
let reg = /{{\$[0-9]}}/;
let str = "<div>{{$0}}({{$1}})</div>";
console.log(str.match(reg)[0]);
str.search(reg)