1、JavaScript(JS)正则表达式
参考文档:JavaScript(JS) 正则表达式 和 RegExp 对象
2、stringObject.replace(regexp/substr,replacement)
1)regexp/substr参数
子字符串或要替换的模式的 RegExp 对象
2)replacement参数
一个字符串值。替换的文本或生成替换文本的函数。
replace()
方法第二个参数中特殊字符:
约定字符串 | 说明 |
---|---|
$1、$2、...、$99 | 与正则表达式中的第 1~99 个子表达式相匹配的文本 |
$&(美元符号+连字符) | 与正则表达式相匹配的子字符串 |
$’(美元符号+切换技能键) | 位于匹配子字符串左侧的文本 |
$'(美元符号+单引号) | 位于匹配字符串右侧的文本 |
$$ | 表示 $ 字符串 |
3)flags参数
var pattern = /pattern/flags;
中flags可以是g
,i
、m
、s
、u
和y
,g
指定全局匹配,i
不区分大小写、m
多行匹配、s
启用“dotall”模式,允许点.
匹配换行符\n
、u
是启用完整的 Unicode 支持和y
是 "Sticky"模式:允许在源字符串中的给定位置执行搜索。
3、使用replace()提取替换字符串
1)可以使用replace()提取html中指定内容并进行替换
function replaceCallback(m,g1,g2){
console.log("-----begin-----");
console.log("m = "+m);
console.log("g1 = "+g1);
console.log("g2 = "+g2);
console.log("-----end-----");
return g1+g2;
}
var content = "<p><strong>1、new 运算符</strong>:用于创建对象和调用构造函数。这个我们创建对象实例就比较常用了,比如:</p><pre class=\"prettyprint linenums cs\"> StringBuilder str=new StringBuilder();</pre><p><strong>"
+"2、new 修饰符</strong>:在用作修饰符时,new 关键字可以显式隐藏从基类继承的成员。简单的说,就是现在写的这个类,想写一个和基类中相同的成员,而不继承基类的。运用多态的特性时,也不会调用这个显示隐藏的方法。具体看下如下代码:"
+"</p><pre class=\"prettyprint linenums\">using System;\r\nusing System.Collections.Generic;\r\nusing System.Linq;\r\nusing System.Text;\r\nusing System.Threading.Tasks;\r\n\r\nnamespace ConsoleApp2\r\n{\r\n public class Program\r\n {\r\n static void Main(string[] args)\r\n {\r\n animal a = new animal();\r\n a.name = \"animal\";\r\n a.say();\r\n cat c = new cat();\r\n c.name = \"cat\";\r\n c.say();\r\n dog d = new dog();\r\n d.name = \"dog\";\r\n d.say();\r\n sheep s = new sheep();\r\n s.name = \"sheep\";\r\n s.say();\r\n animal a1 = new cat();\r\n a1.say();\r\n animal a2 = new dog();\r\n a2.say();\r\n animal a3 = new sheep();\r\n a3.say();\r\n }\r\n }\r\n class animal\r\n {\r\n public string name { get; set; }\r\n public virtual void say()\r\n {\r\n Console.WriteLine(\"animal say\");\r\n }\r\n }\r\n class cat : animal\r\n {\r\n public override void say()\r\n {\r\n Console.WriteLine(\"cat say\");\r\n }\r\n }\r\n class dog : animal\r\n {\r\n public new void say() //这个方法被显示隐藏了\r\n {\r\n Console.WriteLine(\"dog say\");\r\n }\r\n }\r\n class sheep : animal\r\n {\r\n }\r\n\r\n}<br></pre><p><strong>";
console.log(content.replace(/<pre class=\"prettyprint linenums\s*(.*?)\"\s*>(.+?)<\/pre>/gms, replaceCallback));
2)改变字符串格式
function replacer(match, p1, p2, p3, offset, string) {
return [p1, p2, p3].join(' - ');
}
var newString = 'abc12345#$*%'.replace(/([^\d]*)(\d*)([^\w]*)/, replacer);
console.log(newString); // abc - 12345 - #$*%
4、replace()中特殊字符($)的使用
replace()
方法第二个参数中特殊字符($)的使用,如下
var re = /(\w+)\s(\w+)/;
var str = "Levi Zhong";
var newstr = str.replace(re, "$2, $1");
console.log(newstr);
1)$'
表示匹配字符串右边的文本
let str = 'hello world';
let str4 = str.replace(/hello/g, "$'");
let str5 = str.replace(/o/g, "$'");
console.log(str4) // world world
console.log(str5) //hell world wrldrld
2) $`
表示匹配字符串文本左边的文本
let str = 'hello world';
let str6 = str.replace(/world/,"$`");
console.log(str6) //hello hello
3)$$
表示插入一个$
let str = '¥7000.00';
let str7 = str.replace(/¥/,"$$");
console.log(str7) //$7000.00