如果你使用過Javascript中的正則表達式兵多,那么你對test()尖啡、match()、replace()和search()這四個方法中的其中一個一定不陌生剩膘,那就是test()衅斩。個人感覺test()方法是使用頻率最高的一個了,至少在表單驗證方面如此怠褐。那么接下來畏梆,我將簡單講講這四個方法的基本用法。
一、test()奠涌,用于檢測一個字符串是否匹配某個正則表達式
使用方法:
RegExpObject.test(string)
其中RegExpObject代表正則表達式宪巨,string代表需要檢測的字符串。該方法返回一個布爾值铣猩,true代表匹配成功揖铜,false代表失敗。
舉個栗子~
var str1 = 'Hello达皿,我叫Real';
var str2 = '大家好天吓,我叫張三';
這里有兩個字符串(本文所有例子都將使用到這兩個字符串),接下來我想要檢測字符串中是否存在英文字符串峦椰,這時就可以使用test()來實現(xiàn):
console.log(/\w+/.test(str1)); //true
console.log(/\w+/.test(str2)); //false
可以看出龄寞,str1是存在英文字符串的,而str2不存在汤功。
可是芝发,雖然我已經(jīng)知道了str1存在英文字符串兽赁,但是我并不知道這樣的字符串有多少悠栓,又具體存在哪些痘昌,這該如何實現(xiàn)呢?
這時match()就閃亮登場啦餐茵!
二科阎、match(),可在字符串內(nèi)檢索指定的值忿族,或找到一個或多個正則表達式的匹配
使用方法:
stringObject.match(searchvalue)
stringObject.match(regexp)
其中stringObject代表需要匹配的字符串锣笨,searchvalue代表需要從字符串中檢索的內(nèi)容,regexp代表正則表達式道批。該方法返回一個數(shù)組错英,但是分為兩種情況:
① regexp 沒有標志 g。
這種情況返回的數(shù)組只包含第一個匹配項隆豹,如果未找到匹配項將返回null椭岩。該返回的數(shù)組中,除了常規(guī)的數(shù)組元素外璃赡,還存在index和input兩個對象屬性簿煌,index存儲的是匹配項在stringObject中的位置,而input存儲的是stringObject的引用鉴吹。比如:
console.log(str1.match('Hello')); //傳入字符串,返回 ["Hello"]
console.log(str1.match(/\w+/)); //傳入正則表達式惩琉,返回 ["Hello"]
② regexp 具有標志 g豆励。
這種情況代表全局匹配,返回的數(shù)組由所有匹配到的字符串元素組成。比如:
console.log(str1.match(/\w+/g)); //找到兩個匹配項良蒸,返回 ["Hello", "Real"]
console.log(str2.match(/\w+/)); //未找到匹配項技扼,返回null
三、replace()嫩痰,用于在字符串中用一些字符替換另一些字符剿吻,或替換一個與正則表達式匹配的子串
使用方法:
stringObject.replace(regexp/substr,replacement)
其中stringObject與regexp同上,substr代表需要被替換掉的子字符串串纺,replacement代表替換文本或生成替換文本的函數(shù)丽旅。該方法返回替換成功之后的字符串。
舉個栗子~
console.log(str1.replace('Hello','Hi')); // "Hi纺棺,我叫Real"
console.log(str1.replace(/Hello/,'Hi')); // "Hi榄笙,我叫Real"
console.log(str2.replace(/Hello/,'Hi')); // 未匹配到被替換內(nèi)容,返回原字符串"大家好祷蝌,我叫張三"
str3 = "Hi,Real";
console.log(str3.replace(/(\w+),(\w+)/, "$2,$1")); //將子字符串交換位置茅撞,返回"Real,Hi"
console.log(str1.replace(/\w+/,function(word){ //將字符串中的第一個匹配元素改為大寫,返回字符串"HELLO巨朦,我叫Real"
return word.toUpperCase();
}));
四米丘、search(),用于檢索字符串中指定的子字符串糊啡,或檢索與正則表達式相匹配的子字符串
使用方法:
stringObject.search(searchvalue)
stringObject.search(regexp)
其中stringObject與regexp同上拄查,返回stringObject中第一個與 regexp 相匹配的子串的起始位置。
同樣舉個例子:
console.log(str1.search(/\w+/)); // 0
console.log(str1.search('Real')); // 8
console.log(str1.search(/\w+/g)); // 0
console.log(str2.search(/\w+/)); // -1
通過第一行和第三行可以看出悔橄,用于全局匹配的 “g” 然而并沒有什么卵用靶累,原因是search()只返回第一個匹配元素的起始位置。
通過最后一行可以看出癣疟,當無法匹配任何元素時該函數(shù)將返回 -1挣柬。
結(jié)束語: 本文只是簡單講了這四個函數(shù)的用法,而對于正則表達式基本語法的話在此就不詳述了睛挚。還有一點要注意的是邪蛔,除了test()之外的其他三個函數(shù),正則表達式都是作為函數(shù)參數(shù)傳入其中的扎狱,所以只需記住test()這一個操作特例就行啦~~