正则表达式之--正则方法

带表格的都建议异步有道云: https://note.youdao.com/ynoteshare1/index.html?id=cf679c5dc90f710f8090c8bd40b1a62d&type=note

replace () 函数示例 : 将字符串中的首字母都替换为大写

const reg7 = /(^|\s)\w{1}/g;

const str7 = "you were ,are and will be in my heart!";

var r = str7.replace(reg7,function(c) {

return c.toUpperCase();

});

console.log(r); //You Were ,are And Will Be In My Heart!

replace()函数 第一个参数为正则且第二个参数为字符串时可以插入特殊字符来引用正则结果;


|

变量名

|

代表的值

|
|

$$

|

插入一个 "$"。

|
|

$&

|

插入匹配的子串。

|
|

$`

|

插入当前匹配的子串左边的内容。

|
|

$'

|

插入当前匹配的子串右边的内容。

|
|

$n

|

假如第一个参数是 RegExp对象,并且 n 是个小于100的非负整数,那么插入第 n 个括号匹配的字符串。

|

这里仅举例最常用的一个用法$n的用法:

const reg8 = /(\d{4})-(\d{2})-(\d{2})/;

const str8 = "2017-09-21";

const result = str8.replace(reg8,"3/$1");

console.log(result); // 输出结果为: 09/21/2017

那么如果第二个参数是一个函数可以获取到匹配的子串吗? 当然是ok的

const result2 = str8.replace(reg8,function(match,p1,p2,offset,string){

return [p1, p2].join(' - ');

});

console.log(result2); //2017-09

解释:

match其实是前面正则匹配到的结果也就是 2017-09-21这个值;

p1,p2,,, 这些就是匹配到的子串,相当于字符串里面的2...

offset 是匹配结果在字符串的下标, 这个例子中全匹配那就是0了

string 是原字符串也就是2017-09-21

split() 函数讲解区:

var names = 'xiaozhang ;tian laoshi; jiaoshou';

var re = /\s;\s/;

var nameList = names.split(re);

console.log(nameList); //["xiaozhang", "tian laoshi", "jiaoshou"]

//可以看出这个函数是全局匹配的即使表达式中没有写明全局匹配

var myString = 'Hello World. How are you doing?';

var splits = myString.split(' ', 3);

console.log(splits); //["Hello", "World.", "How"]

//split 函数可以传入第二个参数,用以限制最后结果数组的长度。

你可能感兴趣的:(正则表达式之--正则方法)