首先我們前面介紹過,replace()方法中的第二個參數若是回調函數,那么這個回調函數中的參數就是匹配成功后的結果。。。。。,那么有沒有考慮回調函數中有多個參數呢?
先舉個例子:
!DOCTYPE>
html>
head>
meta charset='utf-8'>
title>/title>
/head>
script type="text/javascript">
window.onload=function(){
var date='2015-8-7';
var re=/(\d+)(-)/g;
date.replace(re,function(a1,a2,a3){
/*alert(a1);*/
alert(a2);
/*alert(a3);*/
});
};
/script>
body>
/body>
/html>
上面的例子需要你分別查看a1,a2,a3的值,你會發(fā)現一些規(guī)律
單獨查看a1:2015- 8-
單獨查看a2:2015 8
單獨查看a3:- -
把三個參數形象的打個比方吧,a1相當于母親,a2是大兒子,a3是小兒子,每個兒子都繼承了媽媽的一部分基因
a1是var re=/\d+-/g; 這個正則的結果
a2是var re=/(\d+)(-)/g;左邊第一個括號的結果
a2是var re=/(\d+)(-)/g;左邊第二個括號的結果
說了這么多參數的用途,下面我們來實現輸出:2015.8.7
方法一:對兒子操作
!DOCTYPE>
html>
head>
meta charset='utf-8'>
title>/title>
/head>
script type="text/javascript">
window.onload=function(){
var date='2015-8-7';
var re=/(\d+)(-)/g;
var a=date.replace(re,function(a1,a2,a3){
return a2+'.';
});
alert(a);
};
/script>
body>
/body>
/html>
方法二:對母親操作
!DOCTYPE>
html>
head>
meta charset='utf-8'>
title>/title>
/head>
script type="text/javascript">
window.onload=function(){
var date='2015-8-7';
var re=/(\d+)(-)/g;
var a=date.replace(re,function(a1,a2,a3){
return a1.substring(0,a1.length-1)+'.';
});
alert(a);
};
/script>
body>
/body>
/html>
學了正則中的replace()方法的回調函的多個參數與括號之間的關系,瞬間覺得正則復雜了起來。。。。
正則表達式中方括號[]與圓括號()的區(qū)別是什么?
最基本的意思:小括號就是括號內看成一個整體 ,中括號就是匹配括號內的其中一個,大括號就是匹配幾次
但是括號里變加上其他字符就有不同意思 詳細介紹 例如:
{n}
n是一個非負整數.匹配確定的n次.例如,“o{2}”不能匹配“Bob”中的“o”,但是能匹配“food”中的兩個o.
{n,}
n是一個非負整數.至少匹配n次.例如,“o{2,}”不能匹配“Bob”中的“o”,但能匹配“foooood”中的所有o.“o{1,}”等價于“o+”.“o{0,}”則等價于“o*”.
{n,m}
m和n均為非負整數,其中n
[] 無意義,一般用作匹配一個集合
比如
[0-9] :查找任何從 0 至 9 的數字.
[a-Z] :查找任何從小寫 a 到大寫 Z 的字符.
()也是匹配一個集合,但它還可以用作反向引用.
以上所述就是本文的全部內容了,希望大家能夠喜歡。
您可能感興趣的文章:- asp 過濾尖括號內所有內容的正則代碼
- JS 正則表達式中小括號的應用
- php使用正則表達式提取字符串中尖括號、小括號、中括號、大括號中的字符串
- 正則表達式(括號)、[中括號]、{大括號}的區(qū)別小結
- python正則表達式中的括號匹配問題