JavaScript基础 正则表达式 replace

字符串.replace( 正则 , 替换的内容)
将匹配到的内容替换
替换的内容可以是字符串,也可以是带return的函数


image.png

image.png

经典案例:

把明天 和 您好 对换
var str = '明天 您好'
var reg = /(明天)\s(您好)/g;
console.log( str.replace( reg , '$2 $1') )

 /(明天)\s(您好)/g    // \s规定有空格  整体就是匹配到上面str
$1 $2 对应上面的子集
把 $1 各 $2对换 就是上面子集对换

案例:脏话过虑

Animation.gif

return函数

 var reg = /操*你妈|垃圾|鸡巴|干*你妈/g;
val = val.replace( reg , function (  ) {
               console.log( arguments );
           } ) //正则不会改变原数据,所以要重新赋值
image.png
 var reg = /(操)*你妈|垃圾|鸡巴|干*你妈/g;
val = val.replace( reg , function (  ) {
               console.log( arguments );
           } ) //正则不会改变原数据,所以要重新赋值
image.png

有几个文字就有几个 * 号


Animation.gif
var reg = /操*你妈|垃圾|鸡(\s,.)*巴|干*你妈/g;   //鸡\s*巴 匹配中间有空格
//.匹配除换行符 \n 之外的任何单字符。要匹配 . ,请使用 \. 。
Animation.gif

.匹配除换行符 \n 之外的任何单字符。要匹配 . ,请使用 . 。

如果有匹配所有 [/d/D]

           var reg = /操*你妈|垃圾|鸡(\s\.。)*巴|傻[\d\D]*逼|干*你妈/g;
           val = val.replace( reg , function (  ) {
               console.log( arguments )
               var str = arguments[0];
               var s = '';
               for(var i=0 , length=str.length ; i

傻[\d\D]*逼 中间匹配所有字符 不合理


Animation.gif
          var reg = /操*你妈|垃圾|鸡[\s,]*巴|傻[\s\.。,,]*逼|干*你妈/g;
           val = val.replace( reg , function (  ) {
               console.log( arguments )
               var str = arguments[0];
               var s = '';
               for(var i=0 , length=str.length ; i
Animation.gif

补充

\1

var str = 'aaaabbbbbccccdddddeeeeffffgggg';
var reg = /(\w)\1+/g; 
console.log( str.match(reg) )
image.png

原理是:(\1 \2 \3 \4 ....\9 必须匹配的必须子集搭配)
开始匹配时第一个a符合\w这里\1就锁定匹配所有的a 相当于/(a+)/g的规则
a都匹配完碰到b符合\w的 这里\1锁定匹配所有的a 相当于/b+/g的规则

var str = 'abbbbbbbb acccc';
    var reg = /(\w)(\w)+/g;
    console.log( str.match( reg ) )
image.png

\2就代表第二个子集匹配 (\w)\2
....

^不在[]里表示起始位置,匹配一个位置而不是一个字符
$结束位置,匹配的是一个位置而不是一个字符

案例:匹配是不是QQ号


/^[1-9]\d{3,9}[0-9]$/ ^表示必须以[1-9]数字开头 \d{3,9}中间取3到9 $必须以[0-9]
/^[1-9]\d{4,10}$/ ^表示必须以[1-9]数字开头 \d{4,10}中间取4到10 $必须以\d结束

一些常用的正则规则


你可能感兴趣的:(JavaScript基础 正则表达式 replace)