前端時間的自學(xué)的時候,怎么沒吃透正則的用法,最近js有一定的提高,開始有時間補充漏洞的時候!
1.何為正則呢?
正則也叫規(guī)則,讓計算機能識別人類的規(guī)則
2.正則的操作那些呢?---字符串的
3.正則的表達式:
var str=/正則表達式/;
var str=new RegExp("","");是字符串形式,當(dāng)正則需要傳參的時候,用正則的全稱的寫法
4.正則的常用的方法
test:正則去匹配字符串,如果匹配成果就返回時真true,反而時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)識 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):正則匹配成功就會結(jié)束,不會繼續(xù)匹配
如果想全部查找,就要加標(biāo)識 g(全局匹配)
量詞 : 匹配不確定的位置
+至少出現(xiàn)一次
var str = 'haj123sdk54hask33dkhalsd879';
var re = /\d+/g;
alert( str.match(re) );
replace : 正則去匹配字符串,匹配成功的字符去替換成新的字符串,replace : 第二個參數(shù):可以是字符串,也可以是一個回調(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ù)的第一個參數(shù):就是匹配成功的字符
//alert( str );
var result = '';
for(var i=0;i
匹配子項 : 小括號 ()? (還有另外一個意思,分組操作)
把正則的整體叫做(母親)
//然后把左邊第一個小括號里面的正則,叫做這個第一個子項(母親的第一個孩子)
//第二個小括號就是第二個孩子
例:
var str = '2013-6-7';
var re = /(\d+)(-)/g;
str = str.replace(re,function($0,$1,$2){
//第一個參數(shù):$0(母親),第二個參數(shù) : $1(第一個孩子)
//,第二個參數(shù) : $1(第二個孩子)
//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的時候才可以獲取到子項的集合)
字符類 : 一組相似的元素? [] 中括號的整體代表一個字符
例:
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ù)項最多的字符和個數(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次*/
常用的正則表達式
高級表單校驗
匹配中文:[\u4e00-\u9fa5]
行首行尾空格:^\s*|\s*$
Email:^\w+@[a-z0-9]+(\.[a-z]+){1,3}$
網(wǎng)址:[a-zA-z]+://[^\s]*
QQ號:[1-9][0-9]{4,9}
郵政編碼:[1-9]\d{5}
身份證:[1-9]\d{14}|[1-9]\d{17}|[1-9]\d{16}x
把方法包在一個空間里
有人管他叫——命名空間
在公司里,把同一類方法,包在一起
JSON的使用
把之前的方法,包在一起
總結(jié):
1 . 修飾詞
i? :匹配時忽略大小寫
g : 匹配時全局匹配,查找所有匹配項,而非查找到一個既停止
2 . 匹配模式
方括號
---方括號用于查找某個范圍內(nèi)的字符:
表達式描述
[abc]查找方括號之間的任何字符。
[^abc]查找任何不在方括號之間的字符。
[0-9]查找任何從 0 至 9 的數(shù)字。
[a-z]查找任何從小寫 a 到小寫 z 的字符。
[A-Z]查找任何從大寫 A 到大寫 Z 的字符。
[A-z]查找任何從大寫 A 到小寫 z 的字符。
[adgk]查找給定集合內(nèi)的任何字符。
[^adgk]查找給定集合外的任何字符。
(red&|blue&|green)? ? 查找任何指定的選項。
轉(zhuǎn)義字符
---轉(zhuǎn)義字符Metacharacter)是擁有特殊含義的字符:
.查找單個字符,除了換行和行結(jié)束符。
\w查找單詞字符。
\W查找非單詞字符。
\d查找數(shù)字。
\D查找非數(shù)字字符。
\s查找空白字符。
\S查找非空白字符。
\b匹配單詞邊界。
\B匹配非單詞邊界。
\0查找 NUL 字符。
\n查找換行符。
\f查找換頁符。
\r查找回車符。
\t查找制表符。
\v查找垂直制表符。
\xxx查找以八進制數(shù) xxx 規(guī)定的字符。
\xdd查找以十六進制數(shù) dd 規(guī)定的字符。
\uxxxx查找以十六進制數(shù) xxxx 規(guī)定的 Unicode 字符。
量詞
量詞描述
n+匹配任何包含至少一個 n 的字符串。
n*匹配任何包含零個或多個 n 的字符串。
n?匹配任何包含零個或一個 n 的字符串。
n{X}匹配包含 X 個 n 的序列的字符串。
n{X,Y}匹配包含 X 或 Y 個 n 的序列的字符串。
n{X,}匹配包含至少 X 個 n 的序列的字符串。
n$匹配任何結(jié)尾為 n 的字符串。
^n匹配任何開頭為 n 的字符串。
?=n匹配任何其后緊接指定字符串 n 的字符串。
?!n匹配任何其后沒有緊接指定字符串 n 的字符串。
RegExp 對象方法
方法描述
compile編譯正則表達式。
exec檢索字符串中指定的值。返回找到的值,并確定其位置。
test檢索字符串中指定的值。返回 true 或 false。
支持正則表達式的 String 對象的方法
方法描述
search檢索與正則表達式相匹配的值。
match找到一個或多個正則表達式的匹配。
replace替換與正則表達式匹配的子串。
split把字符串分割為字符串?dāng)?shù)組。
原文鏈接:http://www.lxweimin.com/p/4fb6354708e6
一、什么是正則表達式(Regular Expression)
正則表達式是對字符串操作的一種邏輯公式,就是用事先定義好的一些特定字符、及這些特定字符的組合,組成一個“規(guī)則字符串”,這個“規(guī)則字符串”用來表達對字符串的一種過濾邏輯( 即用這種方法來匹配想要的東西)。
文/XZ陽光小熊(簡書作者)
原文鏈接:http://www.lxweimin.com/p/786938bb6d6f
著作權(quán)歸作者所有,轉(zhuǎn)載請聯(lián)系作者獲得授權(quán),并標(biāo)注“簡書作者”。