一煞额、正則表達式

1眶掌、匹配方法

RegExp

exec

/ab+c/.exec('abbcjhuohuoabcjhih') 
// ["abbc", index: 0, input: "abbcjhuohuoabcjhih", groups: undefined]

test 返回true or false

String方法

match: 當reg沒有g的時候和exec一樣,當有g的時候直接返回匹配數(shù)組
replace
search:返回索引
split

  • 創(chuàng)建正則
// pattern/flags
const regex = /ab+c/;
const regex = /^[a-zA-Z]+[0-9]*\W?_$/gi;

// new RegExp(pattern [, flags])
let regex = new RegExp("ab+c");
let regex = new RegExp(/^[a-zA-Z]+[0-9]*\W?_$/, "gi");  // 斜杠
let regex = new RegExp("^[a-zA-Z]+[0-9]*\\W?_$", "gi"); // 引號号杠,多了轉義字符

2、一些符號

  • i不區(qū)分大小寫
  • g 全局匹配
  • () 匹配
'bar foo'.replace( /(...) (...)/, '$2 $1' )
var reg = /(\w+)\s(\w+)/;
var str = "John Smith";
var newstr = str.replace(reg, "$2, $1");
console.log(newstr); // Smith, John
  • [] [a-z] 任意一個
  • {} {3丰歌,4} 表示次數(shù)姨蟋,3到4次;\d{3}連續(xù)三個數(shù)字
  • \w 數(shù)字字母下劃線,等價于[A-Za-z0-9_]
  • \W 等價于[^A-Za-z0-9_],匹配 "50%." 中的 %
    當 '^' 作為第一個字符出現(xiàn)在一個字符集合模式時,它將會有不同的含義'%'立帖。大寫就是反的眼溶。
  • \d 數(shù)字
* //0個或以上,等價于{0,}
+ //一個或以上晓勇,等價于{1,}
? // 等價于{0,1}
let str = '123abc'
貪婪(盡可能匹配多的字符串):應用 /\d+/ 將會返回 "123"
非貪婪:使用 /\d+?/,那么就只會匹配到 "1"
.(小數(shù)點)匹配除換行符之外的任何單個字符

3堂飞、零寬斷言

(?=exp)  //正先行斷言  匹配后綴前的
[a-z]*(?=ing) 匹配 cooking ,singing 绑咱,doing中除了ing之外的內(nèi)容绰筛,只取cook, sing, do的內(nèi)容
(?<=exp) //正后發(fā)斷言  匹配前綴后的
(?<=abc).* 可以匹配 abcdefgabc 中的 defgabc 而不是 abcdefg
(?!exp)  //反先行斷言
(?<!exp) //反后發(fā)斷言
image.png

4、注意事項

  • \b 匹配一個零寬單詞邊界(zero-width word boundary)描融,如一個字母與一個空格之間铝噩。 (不要和 [\b] 混淆)
    例如,/\bno/ 匹配 "at noon" 中的 "no"稼稿,/ly\b/ 匹配 "possibly yesterday." 中的 "ly"薄榛。
  • ^ 單獨出現(xiàn)是開始標志讳窟,和字母組合是補集的意思

5、小括號()捕獲

  • exec 返回的數(shù)組arr[0]完整匹配敞恋。后面1234分別匹配1234個括號
  • 1-9
var str = 'hello world';            
var pattern = /([a-z]+)\s([a-z]+)/; 
pattern.test(str); //這個地方必須運行正則匹配一次丽啡,方式不限,可以是test()硬猫、exec()补箍、以及String的正則方式

console.log(RegExp.$1) //'hello' 第一個分組([a-z]+)的值
console.log(RegExp.$2) //'world' 第二個分組([a-z]+)的值

var n_str = RegExp.$2+' '+RegExp.$1;
console.log(n_str) //world hello

7、非捕獲(?: 表達式)

//先看用捕獲性分組匹配會返回什么
var str1 = '000aaa111';             
var pattern = /([a-z]+)(\d+)/; //捕獲性分組匹配
var arr = pattern.exec(str1);  
console.log(arr) //['aaa111','aaa','111']   結果子串也獲取到了啸蜜,這并不是我們想要的結果

//非捕獲性分組
var str2 = '000aaa111';
var pattern2 = /(?:[a-z]+)(?:\d+)/; //非捕獲性分組匹配
var arr2 = pattern.exec(str2);  
console.log(arr2) //['aaa111']  結果正確

8坑雅、如果正則中有變量,用new來構造

var reg = new RegExp(`${x}`,'g')

實例

1-判斷郵箱

reg=/^(\w)+(\.\w+)*@(\w)+(\.\w+)+$/;

2-輸入'rgb(255, 255, 255)'衬横,輸出#ffffff

    return sRGB.replace(/^rgb\((\d+),\s*(\d+),\s*(\d+)\)$/g,function(a,b,c,d){   //a是原字符串裹粤,bcd是圓括號匹配到的數(shù)字
        return '#'+hex(b)+hex(c)+hex(d);
        function hex(n){
            return n<16? '0'+(+n).toString(16) : (+n).toString(16);  } })

3- -webkit-border-image 轉成webkitBorderImage

return sName.replace(/\-[a-z]/g,function(s,i){             //i為每次匹配到的字符
        return i==0? s.replace("-",""): s.replace("-","").toUpperCase();
    });

4-提取數(shù)字

var a='(2 -> 4 -> 3)'
b=a.match(/\d/g)
/*是否帶有小數(shù)*/
function    isDecimal(strValue )  {  
   var  objRegExp= /^\d+\.\d+$/;
   return  objRegExp.test(strValue);  
}  

/*校驗是否中文名稱組成 */
function ischina(str) {
    var reg=/^[\u4E00-\u9FA5]{2,4}$/;   /*定義驗證表達式*/
    return reg.test(str);     /*進行驗證*/
}

/*校驗是否全由8位數(shù)字組成 */
function isStudentNo(str) {
    var reg=/^[0-9]{8}$/;   /*定義驗證表達式*/
    return reg.test(str);     /*進行驗證*/
}

/*校驗電話碼格式 */
function isTelCode(str) {
    var reg= /^((0\d{2,3}-\d{7,8})|(1[3584]\d{9}))$/;
    return reg.test(str);
}

/*校驗郵件地址是否合法 */
function IsEmail(str) {
    var reg=/^\w+@[a-zA-Z0-9]{2,10}(?:\.[a-z]{2,4}){1,3}$/;
    return reg.test(str);
}
最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市蜂林,隨后出現(xiàn)的幾起案子遥诉,更是在濱河造成了極大的恐慌,老刑警劉巖噪叙,帶你破解...
    沈念sama閱讀 222,464評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件矮锈,死亡現(xiàn)場離奇詭異,居然都是意外死亡睁蕾,警方通過查閱死者的電腦和手機苞笨,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,033評論 3 399
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來子眶,“玉大人瀑凝,你說我怎么就攤上這事∫嫉辏” “怎么了猜丹?”我有些...
    開封第一講書人閱讀 169,078評論 0 362
  • 文/不壞的土叔 我叫張陵,是天一觀的道長硅卢。 經(jīng)常有香客問我射窒,道長将塑,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,979評論 1 299
  • 正文 為了忘掉前任点寥,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘蔽莱。我一直安慰自己弟疆,他們只是感情好,可當我...
    茶點故事閱讀 69,001評論 6 398
  • 文/花漫 我一把揭開白布怠苔。 她就那樣靜靜地躺著仪糖,像睡著了一般柑司。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上锅劝,一...
    開封第一講書人閱讀 52,584評論 1 312
  • 那天攒驰,我揣著相機與錄音,去河邊找鬼故爵。 笑死,一個胖子當著我的面吹牛奶段,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 41,085評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼晦鞋,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了悠垛?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 40,023評論 0 277
  • 序言:老撾萬榮一對情侶失蹤确买,失蹤者是張志新(化名)和其女友劉穎纱皆,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體派草,經(jīng)...
    沈念sama閱讀 46,555評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,626評論 3 342
  • 正文 我和宋清朗相戀三年艺普,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片歧譬。...
    茶點故事閱讀 40,769評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖矢洲,靈堂內(nèi)的尸體忽然破棺而出面氓,到底是詐尸還是另有隱情兵钮,我是刑警寧澤舌界,帶...
    沈念sama閱讀 36,439評論 5 351
  • 正文 年R本政府宣布,位于F島的核電站葱轩,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏靴拱。R本人自食惡果不足惜猾普,卻給世界環(huán)境...
    茶點故事閱讀 42,115評論 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望初家。 院中可真熱鬧,春花似錦溜在、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,601評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽沿盅。三九已至籽腕,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間皇耗,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,702評論 1 274
  • 我被黑心中介騙來泰國打工万伤, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人敌买。 一個月前我還...
    沈念sama閱讀 49,191評論 3 378
  • 正文 我出身青樓,卻偏偏與公主長得像虹钮,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子祭玉,可洞房花燭夜當晚...
    茶點故事閱讀 45,781評論 2 361

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