『壹』 js正則表達式替換帶中括弧的內容
可以參考下面的代碼:
str = "內容內容內[em123]容內容[em567]內容內容"
reg = new RegExp('\[em(.+?)\]',"g");
//reg = /[em(.+?)]/g
ss = str .replace(reg,"em$1.jpg");
(1)jsregexpmatch替換擴展閱讀:
正則表達式的組件可以是單個的字元、字元集合、字元范圍、字元間的選擇或者所有這些組件的任意組合。
正則表達式是由普通字元(例如字元 a 到 z)以及特殊字元(稱為"元字元")組成的文字模式。模式描述在搜索文本時要匹配的一個或多個字元串。正則表達式作為一個模板,將某個字元模式與所搜索的字元串進行匹配。
一個正則表達式看上去就是一個普通的查找串。
例如,正則表達式"testing"中沒有包含任何元字元,它可以匹配"testing"和"testing123"等字元串,但是不能匹配"Testing"。
『貳』 如何用js或則jquery過濾特殊字元
1、jQuery使用正則匹配替換特殊字元
functionRegeMatch(){
varpattern=newRegExp("[~'!@#$%^&*()-+_=:]");
if($("#name").val()!=""&&$("#name").val()!=null){
if(pattern.test($("#name").val())){
alert("非法字元!");
$("#name").attr("value","");
$("#name").focus();
returnfalse;
}
}
}
2、jQuery限制輸入ASCII值
//數字0-9的ascii為48-57
//大寫-Z的ascii為65-90
//小寫a-z的ascii為97-122
//----------------------------------------------------------------------
//<summary>
//限制只能輸入數字和字母
//</summary>
//----------------------------------------------------------------------
$.fn.onlyNumAlpha=function(){
$(this).keypress(function(event){
vareventObj=event||e;
varkeyCode=eventObj.keyCode||eventObj.which;
if((keyCode>=48&&keyCode<=57)||(keyCode>=65&&keyCode<=90)||(keyCode>=97&&keyCode<=122))
returntrue;
else
returnfalse;
}).focus(function(){
this.style.imeMode='disabled';
}).bind("paste",function(){
varclipboard=window.clipboardData.getData("Text");
if(/^(d|[a-zA-Z])+$/.test(clipboard))
returntrue;
else
returnfalse;
});
};
//-----調用方法$("#文本框id").onlyNumAlpha();
3、js正則匹配過濾
functionstripscript(s)
{
varpattern=newRegExp("[`~!@#$^&*()=|{}':;',\[\].<>/?~!@#¥……&*()——|{}【】『;:」「'。,、?]")
varrs="";
for(vari=0;i<s.length;i++){
rs=rs+s.substr(i,1).replace(pattern,'');
}
returnrs;
}
『叄』 js 如何正則匹配多個,像php 的preg_match()
javaScript中的 match() 方法可以實現
match() 方法可在字元串內檢索指定的值,或找到一個或多個正則表達式的匹配。
stringObject.match(searchvalue)
stringObject.match(regexp)
參數說明
searchvalue 必需。規定要檢索的字元串值。
regexp 必需。規定要匹配的模式的 RegExp 對象。如果該參數不是 RegExp 對象,則需要首先把它傳遞給 RegExp 構造函數,將其轉換為 RegExp 對象。
返回值
存放匹配結果的數組。該數組的內容依賴於 regexp 是否具有全局標志 g。
其他說明
match() 方法將檢索字元串 stringObject,以找到一個或多個與 regexp 匹配的文本。這個方法的行為在很大程度上有賴於 regexp 是否具有標志 g。
如果 regexp 沒有標志 g,那麼 match() 方法就只能在 stringObject 中執行一次匹配。如果沒有找到任何匹配的文本, match() 將返回 null。否則,它將返回一個數組,其中存放了與它找到的匹配文本有關的信息。該數組的第 0 個元素存放的是匹配文本,而其餘的元素存放的是與正則表達式的子表達式匹配的文本。除了這些常規的數組元素之外,返回的數組還含有兩個對象屬性。index 屬性聲明的是匹配文本的起始字元在 stringObject 中的位置,input 屬性聲明的是對 stringObject 的引用。
如果 regexp 具有標志 g,則 match() 方法將執行全局檢索,找到 stringObject 中的所有匹配子字元串。若沒有找到任何匹配的子串,則返回 null。如果找到了一個或多個匹配子串,則返回一個數組。不過全局匹配返回的數組的內容與前者大不相同,它的數組元素中存放的是 stringObject 中所有的匹配子串,而且也沒有 index 屬性或 input 屬性。
注意:在全局檢索模式下,match() 即不提供與子表達式匹配的文本的信息,也不聲明每個匹配子串的位置。如果您需要這些全局檢索的信息,可以使用 RegExp.exec()。
例如:
我們將使用全局匹配的正則表達式來檢索字元串中的所有數字:
<script type="text/javascript">
var str="1 plus 2 equal 3"
document.write(str.match(/\d+/g))
</script>
輸出:
1,2,3
『肆』 js 中如何替換字元串
JS字元串替換函數:Replace(「字元串1″, 「字元串2″), 1.我們都知道JS中字元串替換函數是Replace(「字元串1″, 「字元串2″),但是這個函數只能將第一次出現的字元串1替換掉,那麼我們如何才能一次性全部替換掉了? <script> var s = "LOVE LIFE ! LOVE JAVA ..."; alert(s); alert(s.replace("LOVE ", "愛")); alert(s.replace(/LOVE/g, "愛"旦梁)); </script>
function formatStr(str) { str=str.replace(/ /ig,"<br/>"); return str; } 要注意兩點: 要使用正則表達式,不能使用 str.replace(" ", newString); ,這會導致只替換第一個匹配的子字元串。 母字元串中不一定 會同時存在,也許只有 ,沒有 也是可能的。 replace方法的語法是:stringObj.replace(rgExp, replaceText) 其中stringObj是字元串(string),reExp可以是正則表達式對象(RegExp)也可以是字元串(string),replaceText是替代查找到的字元串。。為了幫助大家更好的理解,下面舉個簡單例子說明一下 Js代碼 <script language="javascript"> var stringObj="終古人民共和國,終滾中古人民"; //替換錯別字「終古」為「中國」 //並返回替換後的新字元 //原字元串stringObj的值沒有改變 var newstr=stringObj.replace("終古","中國"); alert(newstr); </script> 比我聰明的你,看完上面的例子之後,會發現第二個錯別字「終古」並沒有被替換成「中國」,我們可以執行二次replace方法把第二個錯別字「終古」也替換掉,程序經過改進之後如下: Js代碼 <script language="javascript"> var stringObj="終古人民共和國,終古人民"; //替換錯別字「終古」為「中國」 //並返回替換後的新字元 //原字元串stringObj的值沒有改變 var newstr=stringObj.replace("終古","中國"); newstr=newstr.replace("終古","中國"); alert(newstr); </script> 我們可以仔細的想一下,如果有N的N次方個錯別字,是不是也要執行N的N次方replace方法來替換掉錯別字呢??呵,不用怕,有了正則表達式之後不用一個錯別字要執行一次replace方法。。程序經過改進之後的代碼如下 Js代碼 <script language="javascript"> var reg=new RegExp("終古","g"); //創建正則RegExp對象 var stringObj="終古人民共和國,終古人民"; var newstr=stringObj.replace(reg,"中國"); alert(newstr); </script> 上面講的是replace方模備運法最簡單的應用,不知道大家有沒有看懂??下面開始講稍微復雜一點的應用。。 大家在一些網站上搜索文章的時候,會發現這么一個現象,就是搜索的關鍵字會高亮改變顏色顯示出來??這是怎麼實現的呢??其實我們可以用正則表達式來實現,具體怎麼樣實現呢?簡單的原理請看下面的代碼 Js代碼 <script language="javascript"> var str="中華人民共和國,中華人民共和國"; var newstr=str.replace(/(人)/g,"<font color=red>$1</font>"); document.write(newstr); </script> 上面的程序缺少互動性,我們再改進一下程序,實現可以自主輸入要查找的字元 Js代碼 <script language="javascript"> var s=prompt("請輸入在查找的字元","人"); var reg=new RegExp("("+s+")","g"); var str="中華人民共和國,中華人民共和國"; var newstr=str.replace(reg,"<font color=red>$1</font>"); document.write(newstr); </script> 可能大家都會對$1這個特殊字元表示什麼意思不是很理解,其實$1表示的就是左邊表達式中括弧內的字元,即第一個子匹配,同理可得$2表示第二個子匹配。。什麼是子匹配呢??通俗點講,就是左邊每一個括弧是第一個字匹配,第二個括弧是第二個子匹配。。 當我們要把查找到的字元進行運算的時候,怎麼樣實現呢??在實現之前,我們先講一下怎麼樣獲取某一個函數的參數。。在函數Function的內部,有一個arguments集合,這個集合存儲了當前函數的所有參數,通過arguments可以獲取到函數的所有參數,為了大家理解,請看下面的代碼 Js代碼 <script language="javascript"> function test(){ alert("參數個數:"+arguments.length); alert("每一個參數的值:"+arguments[0]); alert("第二個參數的值"+arguments[1]); //可以用for循環讀取所有的參數 } test("aa","bb","cc"); </script> 看懂上面的程序之後,我們再來看下面一個有趣的程序 Js代碼 <script language="javascript"> var reg=new RegExp("\d","g"); var str="abd1afa4sdf"; str.replace(reg,function(){alert(arguments.length);}); </script> 我們驚奇的發現,匿名函數竟然被執行了二次,並且在函數里還帶有三個參數,為什麼會執行二次呢??這個很容易想到,因為我們寫的正則表達式是匹配單個數字的,而被檢測的字元串剛好也有二個數字,故匿名函數被執行了二次。。在匿名函數內部的那三個參數到底是什麼內容呢??為了弄清這個問題,我們看下面的代碼。 Js代碼 <script language="javascript"> function test(){ for(var i=0;i<arguments.length;i++){ alert("第"+(i+1)+"個參數的值:"+arguments); } } var reg=new RegExp("\d","g"); var str="abd1afa4sdf"; str.replace(reg,test); </script> 經過觀察我們發現,第一個參數表示匹配到的字元,第二個參數表示匹配時的字元最小索引位置(RegExp.index),第三個參數表示被匹配的字元串(RegExp.input)。其實這些參數的個數,還會隨著子匹配的變多而變多的。弄清這些問題之後,我們可以用另外的一種寫法 Js代碼 <script language="javascript"> function test($1){ return "<font color=』red』>"+$1+"</font>" } var s=prompt("請輸入在查找的字元","人"); var reg=new RegExp("("+s+")","g"); var str="中華人民共和國,中華人民共和國"; var newstr=str.replace(reg,test); document.write(newstr); </script> 看了上面的程序,原來可以對匹配到的字元為所欲為。下面簡單舉一個應用的例子 Js代碼 <script language="javascript"> var str="他今年22歲,她今年20歲,他的爸爸今年45歲,她的爸爸今年44歲,一共有4人" function test($1){ var gyear=(new Date()).getYear()-parseInt($1)+1; return $1+"("+gyear+"年出生)"; } var reg=new RegExp("(\d+)歲","g"); var newstr=str.replace(reg,test); alert(str); alert(newstr); </script>
『伍』 如何利用javascript的正則表達式替換手機號碼,顯示的結果只顯示手機號碼的後四位數字
// 匹配手機號首尾,以類似「123****8901」的形式輸出
'.replace(/(d{3})d{4}(d{4})/, '$1****$2');
此段正則匹配字元串中的連版續11位數字,替權換中間4位為*號,輸出常見的隱匿手機號的格式。
如果要僅得到末尾4位,則可以改成如下形式:
// 匹配連續11位數字,並替換其中的前7位為*號
'.replace(/d{7}(d{4})/, '*******$1');
補充注釋:正則表達式中的括弧即可用於分組,同時也用於定義子模式串,在replace()方法中,參數二中可以使用$n(n為數字)來依次引用模式串中用括弧定義的字串。
『陸』 js的replace如何全部替換目標字元串
replace函數一次只能替換一個目標字元串,可以配合while循環替換所有字元版串。
1、在script標簽中定義權一個字元串,字元串內容為「一個中國北方的中國人在做中國結」,然後將內容輸出在網頁中: