javascript正則表達(dá)式基礎(chǔ)知識入門
正則表達(dá)式的好處到底在哪里呢,下面我們先進(jìn)行個(gè)了解:
我們用js中處理字符串的方法,寫出取出字符串中數(shù)字的函數(shù):
var str='dgh6a567sdo23ujaloo932';
function getNumber(obj){
var arr=[];
for (var i = 0; i < obj.length; i++) {
if (obj.charAt(i)>='0'&&obj.charAt(i)<='9'){
arr.push(obj.charAt(i));
}
}
return arr;
};
console.log(getNumber(str)); //["6", "5", "6", "7", "2", "3", "9", "3", "2"]
上面的方法我們?nèi)〕隽俗址械臄?shù)字,但是我們不滿意,我們需要的是['6','567','23','932']的形式,對函數(shù)進(jìn)行改造:
function getNumber(obj){
var arr=[];
var temp='';
for (var i = 0; i < obj.length; i++) {
if (obj.charAt(i)>='0'&&obj.charAt(i)<='9'){
temp+=obj.charAt(i);//現(xiàn)將相鄰的數(shù)字連接起來
}
else{ //每當(dāng)連接的數(shù)字?jǐn)嚅_時(shí),就在這執(zhí)行
if (temp) {
arr.push(temp);
temp='';
}
};
}
if (temp) { //這里的作用是為了顯示最后數(shù)字的,原因不想解釋
arr.push(temp);
temp='';
}
return arr;
};
那我們用正則表達(dá)式的方式來解決這個(gè)函數(shù)實(shí)現(xiàn)的功能:
function getNumber2(obj){
var arr=[];
var re=/\d+/g;
arr.push(obj.match(re));
return arr;
};
完整的看看程序的運(yùn)行結(jié)果吧:
<!DOCTYPE>
<html>
<head>
<meta charset='utf-8'>
<title></title>
</head>
<script type="text/javascript">
window.onload=function(){
var str='dgh6a567sdo23ujaloo932';
/*function getNumber(obj){
var arr=[];
for (var i = 0; i < obj.length; i++) {
if (obj.charAt(i)>='0'&&obj.charAt(i)<='9'){
arr.push(obj.charAt(i));
}
}
return arr;
};*/
function getNumber(obj){
var arr=[];
var temp='';
for (var i = 0; i < obj.length; i++) {
if (obj.charAt(i)>='0'&&obj.charAt(i)<='9'){
temp+=obj.charAt(i);//現(xiàn)將相鄰的數(shù)字連接起來
}
else{ //每當(dāng)連接的數(shù)字?jǐn)嚅_時(shí),就在這執(zhí)行
if (temp) {
arr.push(temp);
temp='';
}
};
}
if (temp) { //這里的作用是為了顯示最后數(shù)字的,原因不想解釋
arr.push(temp);
temp='';
}
return arr;
};
function getNumber2(obj){
var arr=[];
var re=/\d+/g;
arr.push(obj.match(re));
return arr;
};
console.log(getNumber(str));
console.log(getNumber2(str));
};
</script>
<body>
</body>
</html>
從上面的例子我們可以看出來,正則表達(dá)式的方法有著同樣的效果,但是代碼更加簡短,更加高效,這就是正則的好處啊
正則是為了更高效的處理字符串而產(chǎn)生的,和字符串處理方法一樣,只是更加高效、簡潔(正則只可以處理字符串)
下面我們來系統(tǒng)的學(xué)習(xí)一下,正則的幾個(gè)常用的方法:
在這之前說一下正則的寫法,正則和其他對象array()、object()、Date()等都一樣,都有初始化的方式
var re=/這里面要寫匹配的東西,不寫的話就是注視符號了/; //這樣的就是正則對象的簡單創(chuàng)建,后面文章我都是直接用它來代替的
var re=new RegExp(); //這樣的創(chuàng)建方式也可以的,大家懂得,只是和簡寫不同的是參數(shù)傳遞有點(diǎn)不一樣
(1)test
含義:正則去匹配字符串,當(dāng)匹配成功返回true,反之,返回false;
語法:re.test(字符串);
先說點(diǎn)轉(zhuǎn)義字符吧 :
/s空格 /S非空格 /d數(shù)字 /D非數(shù)字 /w字符(字母、數(shù)字、下劃線) /W非字符
舉個(gè)例子:判斷一個(gè)字符串是否都是數(shù)字
<!DOCTYPE>
<html>
<head>
<meta charset='utf-8'>
<title></title>
</head>
<script type="text/javascript">
window.onload=function(){
var str='dgh6a567sdo23ujaloo932';
var str2='123456';
function allNumber(obj){
var re=/\D/;//定義正則對象匹配非數(shù)字,只要有不是數(shù)字的就是匹配結(jié)束返回結(jié)果
if (re.test(obj)) {
alert('不全是數(shù)字');
}
else{
alert('全是數(shù)字');
};
};
allNumber(str);
allNumber(str2);
};
</script>
<body>
</body>
</html>
(2)search
含義:正則去匹配字符串,當(dāng)匹配成功返回匹配成功的位置,反之,返回-1;和字符串處理方法中的indexof()功能一樣
語法:字符串.search(re);
[color=Red]注意:正則中默認(rèn)是區(qū)分大小寫的,要想讓其不區(qū)分大小寫的就是加標(biāo)識i;[/color]
例子,不區(qū)分大小寫的去正則匹配字符串中某個(gè)字符
<!DOCTYPE>
<html>
<head>
<meta charset='utf-8'>
<title></title>
</head>
<script type="text/javascript">
window.onload=function(){
var str='dgh6b567sdo23ujaloo932';
function searchStr(obj){
var re=/B/i;//定義正則對象匹配b字符,不區(qū)分大小寫
alert(obj.search(re));
};
searchStr(str);
};
</script>
<body>
</body>
</html>
(3)match
含義:正則去匹配字符串,當(dāng)匹配成功返回匹配成功的數(shù)組,反之,返回Null
語法:字符串.match(re);
[color=Red]注意:正則中默認(rèn)是只要是匹配成功就立刻結(jié)束返回相應(yīng)的值,不會(huì)繼續(xù)匹配。若想查找全部就需要加表示g(全局匹配)[/color]
例子:匹配字符串中的連續(xù)數(shù)字并將其存入一個(gè)數(shù)組中(連續(xù)的數(shù)字作為數(shù)組用的一項(xiàng))
程序中的“+”是匹配至少出現(xiàn)一次,為什么要這樣做呢?
前面我們提過“正則中默認(rèn)是只要是匹配成功就立刻結(jié)束返回相應(yīng)的值”,那么在字符串中匹配到一個(gè)數(shù)字時(shí)就會(huì)結(jié)束,將一個(gè)數(shù)字返回?cái)?shù)組,這時(shí)候我們需要的是用g來讓它匹配每一個(gè)元素。
有沒有發(fā)現(xiàn)連續(xù)的數(shù)字沒有確定的個(gè)數(shù),用“+”就可以滿足動(dòng)態(tài)的數(shù)字個(gè)數(shù)。
<!DOCTYPE>
<html>
<head>
<meta charset='utf-8'>
<title></title>
</head>
<script type="text/javascript">
window.onload=function(){
var str='dgh6b567sdo23ujaloo932';
function searchStr1(obj){
var re=/\d/;
return obj.match(re);
};
function searchStr2(obj){
var re=/\d/g;
return obj.match(re);
};
function searchStr3(obj){
var re=/\d\d/g;//全局匹配2位數(shù)
return obj.match(re);
};
function searchStr4(obj){
var re=/\d+/g;
return obj.match(re);
};
console.log(searchStr1(str));
console.log(searchStr2(str));
console.log(searchStr3(str));
console.log(searchStr4(str));
};
</script>
<body>
</body>
</html>
(4)replace
含義:正則去匹配字符串,當(dāng)匹配成功的字符串被新的字符串所替代
語法:字符串.replace(re);
例子:將字符串中的所有的a都替換成b
<!DOCTYPE>
<html>
<head>
<meta charset='utf-8'>
<title></title>
</head>
<script type="text/javascript">
window.onload=function(){
var str='daah6b5a7sdo23ujaloo932';
function replaceStr(obj){
var re=/a/g; //全局匹配a
return obj.replace(re,'b');
};
console.log(replaceStr(str));
};
</script>
<body>
</body>
</html>
暫時(shí)寫到這里后續(xù)跟新。。。
以上所述就是本文的全部內(nèi)容了,希望大家能夠喜歡。
相關(guān)文章
JS實(shí)現(xiàn)仿QQ面板的手風(fēng)琴效果折疊菜單代碼
這篇文章主要介紹了JS實(shí)現(xiàn)仿QQ面板的手風(fēng)琴效果折疊菜單代碼,涉及JavaScript基于鼠標(biāo)事件動(dòng)態(tài)操作頁面元素樣式的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-09-09
將\u8BF7\u9009\u62E9 這樣的字符串轉(zhuǎn)為漢字的代碼
如何把 \u8BF7\u9009\u62E9 這樣的字符串轉(zhuǎn)為漢字,喜歡的朋友可以參考下。2010-11-11
如何解決JavaScript中的數(shù)組長度不對的問題
JavaScript?中的數(shù)組長度是一個(gè)比較常見的坑,理解數(shù)組長度的工作原理非常重要,下面就跟隨小編一起來了解下如何解決JavaScript中的數(shù)組長度不對的問題吧2024-12-12
Javascript es7中比較實(shí)用的兩個(gè)方法示例
這篇文章主要給大家分享了關(guān)于Javascript es7中比較實(shí)用的兩個(gè)方法示例,文中通過示例代碼介紹的非常詳細(xì),對大家具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考借鑒,下面來一起看看吧。2017-07-07
swiper 自動(dòng)圖片無限輪播實(shí)現(xiàn)代碼
今天移動(dòng)端正好需要圖片觸摸滑動(dòng)效果實(shí)現(xiàn)代碼,基于swiper實(shí)現(xiàn),需要的朋友可以參考下2018-05-05
多種方式實(shí)現(xiàn)JS調(diào)用后臺方法進(jìn)行數(shù)據(jù)交互
幾種典型常用的方法如利用控件的AutopostBack屬性、Button提交表單等等,下面為大家分享下JS調(diào)用后臺方法進(jìn)行數(shù)據(jù)交互示例2013-08-08
JavaScript開發(fā)Chrome瀏覽器擴(kuò)展程序UI的教程
Chrome擴(kuò)展開發(fā)API中提供了一些關(guān)于UI外觀的操作,如果是剛剛上手的話首先需要了解Browser Actions、Omnibox、選項(xiàng)頁等,在這篇JavaScript開發(fā)Chrome瀏覽器擴(kuò)展程序UI的教程中,我們先來回顧一下基本知識:2016-05-05

