1.RegExp对象JavaScript有两种方法来实例化RegExp对象文字构造函数文字constreg=/all/;console.log(reg);///all/'这就是我所有的。'.replace(reg,'ALL');//这就是我所有的。构造函数constreg=newRegExp('all');console.log(reg);///all/'这就是我所有的。'.replace(reg,'ALL');//这就是我所有的。2.Metacharacterliteralliteralcharacter一个metacharacterliteralliteralcharacter代表它应该成为的字符。例如,正则表达式为/abc/、/123/;它们分别匹配abc和123,元字符是正则表达式中具有特殊含义的非数字字符。如:\b\d\w。+()等。有些元字符的含义不是唯一的,不同的写法含义可能不同。元字符表:http://tool.oschina.net/uploads/apidocs/jquery/regexp.html3.并不是所有的正则表达式都像前面写的那么简单,因为正则表达式的语法有些复杂,我们在写看别人写的正则表达式,或多或少都会有一些错误,或者难以理解。如果将下面的正则表达式转换成下图,将有助于我们理解正则表达式的含义。^http(|s):\/\/[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+\/$给大家推荐一个工具https://regexper.com4。量词字符的含义+出现一次或多次(至少出现一次)?出现零次或一次(最多出现一次)*出现零次或多次(任意次数){n}出现n次{n,m}出现n到m次{n,}至少出现n次//\d表示匹配数字//匹配数字'1234567890'.replace(/\d/,'a');//a234567890//匹配一个或多个数字(至少匹配一个)'1234567890'.replace(/\d+/,'a');//a'1234567890'.replace(/\d?/,'a');//a234567890'1234567890'.replace(/\d*/,'a');//a'1234567890'.replace(/\d{3}/,'a');//a4567890'1234567890'.replace(/\d{2,4}/,'a');//a567890'1234567890'.replace(/\d{3,}/,'a');//a'12'.replace(/\d{3,}/,'a');//12使用工具https://regexper.com/Diagram\d{2,6}5.贪心模式和非贪心模式从上面4.量词例子,'1234567890'.replace(/\d+/,'A');输出是a而不是a234567890;'1234567890'.replace(/\d{2,4}/,'a');输出是a567890而不是a34567890。贪心模式:正则表达式尽可能多地匹配,直到匹配失败。非贪婪模式:正则表达式尽量少匹配,一旦匹配成功,就不再匹配。因为默认情况下,正则表达式是使用贪婪模式匹配的。如果您希望正则表达式使用非贪婪模式匹配,请添加一个?在量词之后。'1234567890'.replace(/\d{2,4}/,'a');//a567890'1234567890'.replace(/\d{2,4}?/,'a');//a34567890'1234567890'.replace(/\d+/,'a');//a'1234567890'.replace(/\d+?/,'a');//a2345678906。在正则表达式中,您可以使用[]来构建类。正则表达式中的类是指满足一定特征的对象字符类。正则表达式[abcd]是将a,b,c,d归为一类,这个表达式可以匹配到这一类字符'12345a6b7c8D9e'.replace(/[abcd]/g,'|');//12345|6|7|8D9e范围类正则表达式提供[a-z]表示a到z的任意字符(包括a和z)'1a2b3c4q5z'.replace(/[a-z]/g,'|');//1|2|3|4|5|'1a2b3c4T5Z'.replace(/[a-z]/g,'|');//1|2|3|4T5Z'1a2b3c4T5Z'.replace(/[a-zA-Z]/g,'|');//1|2|3|4|5|'1a2b3c4q5z'.replace(/[0-9]/g,'|');//|a|b|c|q|z[a-zA-Z0-9]预定义类字符等同于\d[0-9]数字字符\D[^0-9]非数字字符\w[a-zA-Z0-9_]字母、数字、下划线(单词字符)\W[^a-zA-Z0-9_]非字母、数字、下划线(不是单词字符)\s[\t\n\x0B\f\r]空白字符\S[^\t\n\x0B\f\r]非空白字符。[^\n\r]除换行和回车之外的任何字符7.边界字符含义^以xxx开始$以xxx\bwordboundary\Bnon-wordboundary'img/png/img-1.png'.replace(/img/g,'image')结束;//image/png/image-1.png'img/png/img-1.png'.replace(/^img/g,'image');//图像/png/img-1.png'img/png/img-1.png'.replace(/png/g,'jpg');//img/jpg/img-1.jpg'img/png/img-1.png'.replace(/png$/g,'jpg');//img/png/img-1.jpg'这就是我的全部。'.replace(/is/g,'IS');//ThisisallIhave.'这就是我所有的。'.replace(/\bis\b/g,'IS');//ThisISallIhave.'ThisisallIhave.'.replace(/\Bis\b/g,'IS');//这就是我所有的。9.分组|与量词一起使用将反向引用与|一起使用使用/http(|s):\/\///http(|s):\/\//.test('https://');//true/http(|s):\/\//.test('http://');//真/a(b|c)d/.test('ad');//假/a(b|c)d/.test('abd');//真/a(b|c)d/.test('acd');//如何使用true和量词匹配javascript出现两次javascriptjavascript?/javascript{2}/.test('javascriptjavascript');//false/javascript{2}/.test('javascript');//true/(javascript){2}/.test('javascriptjavascript');//当真正的反向引用包含分组的正则表达式并且匹配成功时,将子表达式匹配的内容保存在内存中按编号编号的组中,可以简单地认为是对局部变量的赋值。这时候就可以通过反向引用来引用这个局部变量的值了。在很多情况下,我们可能需要将某种格式的字符串转换成另一种格式的字符串。例如:将05/28/2018转换为2018-05-28;将Markdown超链接[Test](https://www.test.com/)转换为HTML超链接
