web前端-js小記(7)-正則表達式

0鞋既、\d讳推,\w,\s,[a-zA-Z0-9],\b,.,*,+,?,x{3},^,$分別是什么?

符號 含義
\d [0-9] 表示數(shù)字字符
\w [a-zA-Z0-9_] 表示數(shù)字磺送,大小寫字母及下劃線
\s [\t\n\x0B\f\r] 表示空白符
[a-zA-Z0-9] 表示大小寫字母躯泰,數(shù)字字符
\b 表示單詞邊界
. 表示除回車符換行符的所有字符
* 出現(xiàn)0次或多次(任意次)
+ 出現(xiàn)1一次或多次(最少出現(xiàn)一次)
? 出現(xiàn)0次或1次(最多出現(xiàn)一次)
x{3} 表示x字符出現(xiàn)3次
^ 以什么字符做為開頭
$ 以什么字符做為結尾
[^abc] 表示不是abc的所有字符
abc{3,5}? ?在量詞后面表示非貪婪模式栈戳,若字符串匹配厨剪,c取3個
(abc){10} 表示abc字符連續(xù)出現(xiàn)10次
abc(?=def) 匹配后面為def的abc

1哄酝、RegExp 相關方法

  1. RegExp.prototype.test(str)
//測試字符串參數(shù)中是否存正則表達式模式,如果存在則返回true
var reg = /\d+\.\d{1,2}$/g;
reg.test('123.45'); //true
reg.test('34.5678'); //false
  1. RegExp.prototype.exec(str)
//用的不多
//正則表達式模式在字符串中查找祷膳,若找到了匹配的陶衅,返回一個結果數(shù)組,否則返回null
var reg = /\d/g;
var r = reg.exec('a1b2c3');
  1. String.prototype.search(reg)
//檢索字符串中指定的子字符串,或檢索與正則表達式相匹配的子字符串直晨,忽略標志g搀军,返回字符串的第一個匹配的位置
'a1b2c3'.search(/\d/g); //1
'a1b2c3'.search(/\d/); //1
  1. String.prototype.match(reg)
//非全局調(diào)用:只能執(zhí)行一次匹配膨俐,返回數(shù)組,第一個元素存放的是匹配文本罩句,第二個元素存放index焚刺,是匹配文本的起始字符在字符串中的位置,第三個元素存放input门烂,是檢索的字符串
var r = 'aaa123456'.match(/\d/);   //["1", index: 3, input: "aaa123456"]

//全局調(diào)用:返回數(shù)組乳愉,存放的是字符串中所有的匹配子串,沒有index和input
var r = 'aaa123456'.match(/\d/g);  //["1", "2", "3", "4", "5", "6"]
  1. String.prototype.replace(reg, replaceStr)
//1屯远、string對象的replace方法蔓姚,我們最常用的是傳入兩個字符串的做法,但這種做法有個缺陷慨丐,只能replace一次
// 2坡脐、replace方法的第一個參數(shù)還可以傳入RegExp對象,可以進行全局替換

'abcabcabc'.replace('bc','X'); //aXabcabc
'abcabcabc'.replace(/bc/g,'X'); //aXaXaX
  1. String.prototype.split(reg)
//和replace方法類似房揭,在一些復雜的分割情況下我們可以使用正則表達式解決备闲。
'a,b,c,d'.split(',');   //["a", "b", "c", "d"];
'a1b2c3d'.split(/\d/);   //["a", "b", "c", "d"]

2捅暴、寫一個函數(shù)trim(str)浅役,去除字符串兩邊的空白字符

function trim(str){
  var reg=/(^\s+|\s+$)/g;
  return str.replace(reg,"");
}
var result=trim("  345");
var result1=trim("\nabs");

3、寫一個函數(shù)isEmail(str)伶唯,判斷用戶輸入的是不是郵箱

function isEmail(str){
  var reg=/\w+@[0-9a-zA-Z]+[.][a-z]+/g;
  return reg.test(str);
}
var result1=isEmail("234@qq.com");
var result2=isEmail("abc@123.123");

4、寫一個函數(shù)isPhoneNum(str)惧盹,判斷用戶輸入的是不是手機號

function isPhoneNum(str){
  var reg=/^1\d{10}$/g;
  return reg.test(str);
}
var result1=isPhoneNum("1205425879a");
var result2=isPhoneNum("12457896312a");
var result3=isPhoneNum("12012456789");

5乳幸、寫一個函數(shù)isValidUsername(str),判斷用戶輸入的是不是合法的用戶名(長度6-20個字符钧椰,只能包括字母粹断、數(shù)字、下劃線)

function isValidUsername(str){
  var reg=/^\w{6,20}$/g;
  return reg.test(str);
}
var result1=isValidUsername("ast");
var result2=isValidUsername("astsdg/n");
var result3=isValidUsername("astsd/n");
var result4=isValidUsername("astsdg");
var result5=isValidUsername("astsdgastsdgastsdgsd");

6嫡霞、寫一個函數(shù)isValidPassword(str), 判斷用戶輸入的是不是合法密碼(長度6-20個字符瓶埋,只包括大寫字母、小寫字母诊沪、數(shù)字养筒、下劃線,且至少包括兩種)

function isValidPassword(str){
  if(!/^\w{6,20}$/.test(str)) return false;
  if(/^\d{6,20}$/.test(str)|/^[a-z]{6,20}$/.test(str)|/^[A-Z]{6,20}$/.test(str)|/^_{6,20}$/.test(str)) return false;
  return true;
}
var result1=isValidPassword("abretedggdfgfg");
var result2=isValidPassword("456456dfgdfg");
var result3=isValidPassword("____________");

7端姚、寫一個正則表達式晕粪,得到如下字符串里所有的顏色

var re = /(#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})(?=;))/g
var subj = "color: #121212; background-color: #AA00ef; width: 12px; bad-colors: f#fddee "
console.log(subj.match(re))  // ['#121212', '#AA00ef']

8、下面代碼輸出什么? 為什么? 改寫代碼渐裸,讓其輸出[""hunger"", ""world""].

var str = 'hello  "hunger" , hello "world"';
var pat =  /".*"/g;
str.match(pat); 

輸出[""hunger" , hello "world""]
原因:因為.表示除了回車符和換行符的所有字符巫湘,代表出現(xiàn)0次或多次装悲,而且后面沒有?尚氛,說明是貪婪模式诀诊,是竟可能多的匹配,g代表全局搜索阅嘶,所以得到這結果

var str = 'hello  "hunger" , hello "world"';
var pat =  /".*?"/g;     //?表示非貪婪模式的匹配属瓣,匹配中用盡可能少的次數(shù)去匹配,所以得到不同結果
str.match(pat); 

(mission 7)

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末奈懒,一起剝皮案震驚了整個濱河市奠涌,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌磷杏,老刑警劉巖溜畅,帶你破解...
    沈念sama閱讀 218,204評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異极祸,居然都是意外死亡慈格,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,091評論 3 395
  • 文/潘曉璐 我一進店門遥金,熙熙樓的掌柜王于貴愁眉苦臉地迎上來浴捆,“玉大人,你說我怎么就攤上這事稿械⊙⌒海” “怎么了?”我有些...
    開封第一講書人閱讀 164,548評論 0 354
  • 文/不壞的土叔 我叫張陵美莫,是天一觀的道長页眯。 經(jīng)常有香客問我,道長厢呵,這世上最難降的妖魔是什么窝撵? 我笑而不...
    開封第一講書人閱讀 58,657評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮襟铭,結果婚禮上碌奉,老公的妹妹穿的比我還像新娘。我一直安慰自己寒砖,他們只是感情好赐劣,可當我...
    茶點故事閱讀 67,689評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著哩都,像睡著了一般隆豹。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上茅逮,一...
    開封第一講書人閱讀 51,554評論 1 305
  • 那天璃赡,我揣著相機與錄音判哥,去河邊找鬼。 笑死碉考,一個胖子當著我的面吹牛塌计,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播侯谁,決...
    沈念sama閱讀 40,302評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼锌仅,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了墙贱?” 一聲冷哼從身側(cè)響起热芹,我...
    開封第一講書人閱讀 39,216評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎惨撇,沒想到半個月后伊脓,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,661評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡魁衙,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,851評論 3 336
  • 正文 我和宋清朗相戀三年报腔,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片剖淀。...
    茶點故事閱讀 39,977評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡纯蛾,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出纵隔,到底是詐尸還是另有隱情翻诉,我是刑警寧澤,帶...
    沈念sama閱讀 35,697評論 5 347
  • 正文 年R本政府宣布捌刮,位于F島的核電站米丘,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏糊啡。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,306評論 3 330
  • 文/蒙蒙 一吁津、第九天 我趴在偏房一處隱蔽的房頂上張望棚蓄。 院中可真熱鬧,春花似錦碍脏、人聲如沸梭依。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,898評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽役拴。三九已至,卻和暖如春钾埂,著一層夾襖步出監(jiān)牢的瞬間河闰,已是汗流浹背科平。 一陣腳步聲響...
    開封第一講書人閱讀 33,019評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留姜性,地道東北人瞪慧。 一個月前我還...
    沈念sama閱讀 48,138評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像部念,于是被迫代替她去往敵國和親弃酌。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,927評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 正則表達式(Regular Expression)是計算機科學的一個概念儡炼。正則表達式使用單個字符串來描述妓湘、匹配一系...
    草鞋弟閱讀 755評論 0 0
  • 正則表達式 正則表達式(Regular Expression)是計算機科學的一個概念。正則表達式使用單個字符串來描...
    yshenhn閱讀 360評論 0 0
  • RegExp是正則表達式的縮寫正則表達式使用單個字符串來描述乌询、匹配一系列符合某個句法規(guī)則的字符串榜贴。 正則的定義方法...
    饑人谷_廖珍閱讀 333評論 0 1
  • 一、問答 1.\d楣责,\w,\s,[a-zA-Z0-9],\b,.,*,+,?,x{3},^$分別是什么? \d :...
    我是小韓閱讀 333評論 0 0
  • www.cnblogs.com/hai-ping/articles/2997538.html /判斷輸入內(nèi)容是否為...
    自話閱讀 1,043評論 0 1