前端時(shí)間的自學(xué)的時(shí)候因宇,怎么沒吃透正則的用法,最近js有一定的提高乳怎,開始有時(shí)間補(bǔ)充漏洞的時(shí)候!
1.何為正則呢彩郊?
正則也叫規(guī)則,讓計(jì)算機(jī)能識(shí)別人類的規(guī)則
2.正則的操作那些呢蚪缀?---字符串的
3.正則的表達(dá)式:
var str=/正則表達(dá)式/秫逝;
var str=new RegExp("","");是字符串形式,當(dāng)正則需要傳參的時(shí)候询枚,用正則的全稱的寫法
4.正則的常用的方法
test:正則去匹配字符串违帆,如果匹配成果就返回時(shí)真true,反而時(shí)false
寫法:正則.test(字符串)金蜀;
例:
var str = 'abcdef';
var re = /b/;
alert( re.test(str) );*/---true前方;
/*\s : 空格
\S : 非空格
\d : 數(shù)字
\D : 非數(shù)字
\w : 字符? ( 字母 狈醉,數(shù)字,下劃線_ )
\W : 非字符*/
var str = '374829348791';
var re = /\D/;
if( re.test(str) ){
alert('不全是數(shù)字');
}
else{
alert('全是數(shù)字');
}
search : 正則去匹配字符串 , 如果匹配成功惠险,就返回匹配成功的位置苗傅,如果匹配失敗就返回 -1
search的寫法 : 字符串.search(正則)
正則中的默認(rèn) : 是區(qū)分大小寫的
如果不區(qū)分大小寫的話,在正則的最后加標(biāo)識(shí) i
var str = 'abcdef';
var re = /B/i;
//var re = new RegExp('B','i');
alert( str.search(re) );
match : 正則去匹配字符串班巩,如果匹配成功渣慕,就返回匹配成功的數(shù)組,如果匹配不成功抱慌,就返回null
match的寫法 : 字符串.match(正則)
正則默認(rèn):正則匹配成功就會(huì)結(jié)束逊桦,不會(huì)繼續(xù)匹配
如果想全部查找,就要加標(biāo)識(shí) g(全局匹配)
量詞 : 匹配不確定的位置
+至少出現(xiàn)一次
var str = 'haj123sdk54hask33dkhalsd879';
var re = /\d+/g;
alert( str.match(re) );
replace : 正則去匹配字符串抑进,匹配成功的字符去替換成新的字符串强经,replace : 第二個(gè)參數(shù):可以是字符串,也可以是一個(gè)回調(diào)函數(shù)
replace的寫法 : 字符串.replace(正則,新的字符串)
var str = 'aaa';
var re = /a+/g;
str = str.replace(re,'b');
alert(str);
| : 或的意思
敏感詞過濾:
window.onload = function(){
var aT = document.getElementsByTagName('textarea');
var oInput = document.getElementById('input1');
var re = /菲稱|中國船|監(jiān)視之下/g;
oInput.onclick = function(){
//aT[1].value = aT[0].value.replace(re,'*');
aT[1].value = aT[0].value.replace(re,function(str){
//函數(shù)的第一個(gè)參數(shù):就是匹配成功的字符
//alert( str );
var result = '';
for(var i=0;i
匹配子項(xiàng) : 小括號(hào) ()? (還有另外一個(gè)意思寺渗,分組操作)
把正則的整體叫做(母親)
//然后把左邊第一個(gè)小括號(hào)里面的正則匿情,叫做這個(gè)第一個(gè)子項(xiàng)(母親的第一個(gè)孩子)
//第二個(gè)小括號(hào)就是第二個(gè)孩子
例:
var str = '2013-6-7';
var re = /(\d+)(-)/g;
str = str.replace(re,function($0,$1,$2){
//第一個(gè)參數(shù):$0(母親),第二個(gè)參數(shù) : $1(第一個(gè)孩子)
//,第二個(gè)參數(shù) : $1(第二個(gè)孩子)
//alert( $2 );
//return $1 + '.';
return $0.substring(0,$0.length-1) + '.';
});
alert( str );? //2013.6.7
例2:
var str = 'abc';
var re = /(a)(b)(c)/;
alert( str.match(re) );? //[abc,a,b,c](當(dāng)match不加g的時(shí)候才可以獲取到子項(xiàng)的集合)
字符類 : 一組相似的元素? [] 中括號(hào)的整體代表一個(gè)字符
例:
var str = 'abdc';
var re = /a[bde]c/;
alert( re.test(str) );*/
排除 : ^ 如果^寫在[]里面的話,就代表排除的意思
/*var str = 'abc';
var re = /a[^bde]c/;
alert( re.test(str) );*/
var str = 'abc';
var re = /a[a-z0-9A-Z]c/;
alert( re.test(str) );
獲取class的方法
找重復(fù)項(xiàng)最多的字符和個(gè)數(shù)
var str = 'assssjdssskssalsssdkjsssdss';
var arr = str.split('');
str = arr.sort().join('');
//alert(str);
var value = '';
var index = 0;
var re = /(\w)\1+/g;
str.replace(re,function($0,$1){
//alert($0);
if(index<$0.length){
index = $0.length;
value = $1;
}
});
alert('最多的字符:'+value+',重復(fù)的次數(shù):'+index);
//量詞 : {}
/*{4,7}? : 最少出現(xiàn)4次信殊,最多出現(xiàn)7次
{4,} : 最少出現(xiàn)4次
{4} : 正好出現(xiàn)4次
+ : {1,}? //\d{1,}
? : {0,1}? : 出現(xiàn)0次或者1次
* : {0,}? : 至少出現(xiàn)0次*/
常用的正則表達(dá)式
高級(jí)表單校驗(yàn)
匹配中文:[\u4e00-\u9fa5]
行首行尾空格:^\s*|\s*$
Email:^\w+@[a-z0-9]+(\.[a-z]+){1,3}$
網(wǎng)址:[a-zA-z]+://[^\s]*
QQ號(hào):[1-9][0-9]{4,9}
郵政編碼:[1-9]\d{5}
身份證:[1-9]\d{14}|[1-9]\d{17}|[1-9]\d{16}x
把方法包在一個(gè)空間里
有人管他叫——命名空間
在公司里炬称,把同一類方法,包在一起
JSON的使用
把之前的方法涡拘,包在一起
總結(jié):
1 . 修飾詞
i? :匹配時(shí)忽略大小寫
g : 匹配時(shí)全局匹配,查找所有匹配項(xiàng),而非查找到一個(gè)既停止
2 . 匹配模式
方括號(hào)
---方括號(hào)用于查找某個(gè)范圍內(nèi)的字符:
表達(dá)式描述
[abc]查找方括號(hào)之間的任何字符玲躯。
[^abc]查找任何不在方括號(hào)之間的字符。
[0-9]查找任何從 0 至 9 的數(shù)字鳄乏。
[a-z]查找任何從小寫 a 到小寫 z 的字符跷车。
[A-Z]查找任何從大寫 A 到大寫 Z 的字符。
[A-z]查找任何從大寫 A 到小寫 z 的字符橱野。
[adgk]查找給定集合內(nèi)的任何字符朽缴。
[^adgk]查找給定集合外的任何字符。
(red&|blue&|green)? ? 查找任何指定的選項(xiàng)仲吏。
轉(zhuǎn)義字符
---轉(zhuǎn)義字符Metacharacter)是擁有特殊含義的字符:
.查找單個(gè)字符,除了換行和行結(jié)束符蝌焚。
\w查找單詞字符裹唆。
\W查找非單詞字符。
\d查找數(shù)字只洒。
\D查找非數(shù)字字符许帐。
\s查找空白字符。
\S查找非空白字符毕谴。
\b匹配單詞邊界成畦。
\B匹配非單詞邊界距芬。
\0查找 NUL 字符。
\n查找換行符循帐。
\f查找換頁符框仔。
\r查找回車符。
\t查找制表符拄养。
\v查找垂直制表符离斩。
\xxx查找以八進(jìn)制數(shù) xxx 規(guī)定的字符。
\xdd查找以十六進(jìn)制數(shù) dd 規(guī)定的字符瘪匿。
\uxxxx查找以十六進(jìn)制數(shù) xxxx 規(guī)定的 Unicode 字符跛梗。
量詞
量詞描述
n+匹配任何包含至少一個(gè) n 的字符串。
n*匹配任何包含零個(gè)或多個(gè) n 的字符串棋弥。
n?匹配任何包含零個(gè)或一個(gè) n 的字符串核偿。
n{X}匹配包含 X 個(gè) n 的序列的字符串。
n{X,Y}匹配包含 X 或 Y 個(gè) n 的序列的字符串顽染。
n{X,}匹配包含至少 X 個(gè) n 的序列的字符串漾岳。
n$匹配任何結(jié)尾為 n 的字符串。
^n匹配任何開頭為 n 的字符串家乘。
?=n匹配任何其后緊接指定字符串 n 的字符串蝗羊。
?!n匹配任何其后沒有緊接指定字符串 n 的字符串。
RegExp 對(duì)象方法
方法描述
compile編譯正則表達(dá)式仁锯。
exec檢索字符串中指定的值耀找。返回找到的值,并確定其位置业崖。
test檢索字符串中指定的值野芒。返回 true 或 false。
支持正則表達(dá)式的 String 對(duì)象的方法
方法描述
search檢索與正則表達(dá)式相匹配的值双炕。
match找到一個(gè)或多個(gè)正則表達(dá)式的匹配狞悲。
replace替換與正則表達(dá)式匹配的子串。
split把字符串分割為字符串?dāng)?shù)組妇斤。
原文鏈接:http://www.reibang.com/p/4fb6354708e6
一摇锋、什么是正則表達(dá)式(Regular Expression)
正則表達(dá)式是對(duì)字符串操作的一種邏輯公式,就是用事先定義好的一些特定字符站超、及這些特定字符的組合荸恕,組成一個(gè)“規(guī)則字符串”,這個(gè)“規(guī)則字符串”用來表達(dá)對(duì)字符串的一種過濾邏輯( 即用這種方法來匹配想要的東西)死相。
文/XZ陽光小熊(簡(jiǎn)書作者)
原文鏈接:http://www.reibang.com/p/786938bb6d6f
著作權(quán)歸作者所有融求,轉(zhuǎn)載請(qǐng)聯(lián)系作者獲得授權(quán),并標(biāo)注“簡(jiǎn)書作者”算撮。