您好,登錄后才能下訂單哦!
本篇文章給大家分享的是有關(guān)如何正確的使用正則表達(dá)式,小編覺得挺實(shí)用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。
正則表達(dá)式(Regular Expression)是一種文本模式,包括普通字符(例如,a 到 z 之間的字母)和特殊字符(稱為"元字符")。
正則表達(dá)式使用單個(gè)字符串來描述、匹配一系列匹配某個(gè)句法規(guī)則的字符串。
下面通過實(shí)例代碼介紹下正則表達(dá)式使用
//一個(gè)數(shù)據(jù)類型,記錄文本規(guī)則,一些事先定義好的一些特殊字符,對字符串的過濾邏輯
//表單驗(yàn)證賬號長度,字母或數(shù)字組合,高級搜索
//特點(diǎn),不僅js有;極簡的方式操作字符串;靈活,功能強(qiáng)大
// 正則表達(dá)式大全
var patt1=new RegExp("e"); document.write(patt1.test("The best things in life are free"));
/*是否帶有小數(shù)*/
function isDecimal(strValue ) { var objRegExp= /^\d+\.\d+$/; return objRegExp.test(strValue); }
/*校驗(yàn)是否中文名稱組成 */
function ischina(str) { var reg=/^[\u4E00-\u9FA5]{2,4}$/; /*定義驗(yàn)證表達(dá)式*/ return reg.test(str); /*進(jìn)行驗(yàn)證*/ }
/*校驗(yàn)是否全由8位數(shù)字組成 */
function isStudentNo(str) { var reg=/^[0-9]{8}$/; /*定義驗(yàn)證表達(dá)式*/ return reg.test(str); /*進(jìn)行驗(yàn)證*/ } var arr = new Array(); var reg = new RegExp(/\d/);
//表示匹配數(shù)字
reg = reg.test("jndwjdw"); console.log(reg);
//正則對象。test(需要驗(yàn)證的字符串)
//字面量聲明
var reg2 = /男|女/;
//有沒有其中一個(gè)
var reg = reg2.test("呦呦喲偶女"); console.log(reg); console.log(/男|女/.test("哈迪哈迪哈女"));
//語法
//.test();正則表達(dá)式檢測某段字符串
//預(yù)定義類
console.log(/./.test("\r")); //除了回車和換行外的任意字符 console.log(/\d/.test("123")); //檢測是不是數(shù)字 console.log(/\D/.test("sh")); //非數(shù)字字符,只要不是數(shù)字就true,只要有一個(gè)就是true console.log(/\s/.test("\r")); //只要有不可見就true\r\n\f\h\兩個(gè)空字符串拼接是false console.log(/\S/.test("ah7")); //只要有可見字符就對 console.log(/\w/.test("b-8")); //所有字母數(shù)字和下短線_,只要有就是對短線 console.log(/\W/.test(("bg8-@"))); //true//只要有非單詞字符就是對
//自定義類,沒有\(zhòng)
console.log(/d/.test("123")); //檢測這段里面有不有d這個(gè)字 // console.log(/yskma/.test("yskmama")); //true//檢測這段字符串包不包含yskma,不能斷開不能中間穿插別的 console.log(/yskmama/.test("ysk")); //false //或和優(yōu)先級 console.log(/ysk|mama/.test("ysk")); //true console.log(/ys(k|m)a/.test("ysk")); //false//檢測這段字符串中有不有yska或者ysma console.log(/ys(k|m)a/.test("yskma")); //false//檢測這段字符串中有不有yska或者ysma
//簡單類[]代表一個(gè)字符
console.log(/[abc]/.test("gbhigf")); //true//只要出現(xiàn)abc中 的任意一個(gè)就是對 console.log(/y[abc]z/.test("yaz")); //true//包含yz,并選一個(gè)a console.log(/y[abc]z/.test("yabcz")); //false//abc只能要一個(gè)
//負(fù)向類[^ ]取反
console.log(/[^abc]/.test("a")); //false//除了括號外的內(nèi)容才是對,有就是錯(cuò),不能有括號內(nèi)的 console.log(/[^abc]/.test("af")); //true//除了括號外的內(nèi)容才是對,有就是錯(cuò),不能有括號內(nèi)的
//范圍類
console.log(/[0-9]/.test("b8jg")); //true
//組合類,組合起來就是組合類,自定義類
//^邊界,以。。開頭
//$以。。結(jié)尾
//^bc$嚴(yán)格匹配
//.回車和換行以外的
console.log(/^6a/.test("6akjjkak")); //true console.log(/^6.a/.test("6akjjkak")); //false console.log(/[.]{8}/.test("6akjjkak")); //false,當(dāng)前"."就是代表字符串".",此處沒有8個(gè)".",所以false; console.log(/ac$/.test("6akjjkakac")); //true//ac結(jié)尾 console.log(/^6a$/.test("6a")); //true console.log(/^\d$/.test("9")); //true//只能出現(xiàn)一次 console.log(/^abc\d$/.test("abc7")); //true//只能出現(xiàn)一次
//量詞:?0||1次;+前面的>=1次;*>=0次
console.log(/^colo*r$/.test("color")); //true console.log(/^colo+r$/.test("color")); //true console.log(/^colo?r$/.test("color")); //true console.log(/^colo?r$/.test("colr")); //true console.log(/^colo?r$/.test("coloor")); //false console.log(/^colo*r$/.test("colooooooor")); //true
//量詞,{}前面出現(xiàn)的:。。{n}n次;{n,}>=n;{n,m}...>=n..<=m
//*{0,}..?{0,1}....+{1,}
//括號總結(jié){}次數(shù);[]一個(gè);()一組,分組
//轉(zhuǎn)Unicode:escape("你好")-----Ununicod("u%hkkblpp%^Vhk")
//所有漢字在一到與之間
console.log(/[\u4e00-\u9fa5]/.test("哈")); console.log(/[\u4e00-\u9fa5]{3}/.test("哈你好"));
//字符串替換
var str = "abcde"; console.log(str.replace("a", "b")); //bbcde console.log(str.replace(/a/g, "b")); //bbcde
//換成句號
var str = "a,b,c,d,e"; var str2 = str.replace(/,/g, "."); //g是替換全部 console.log(str2);
//修改成績
var str = "a,b,c,70,90"; var str2 = str.replace(/\d{1,}/g, "100"); //g是替換全部 console.log(str2); //吧,.都改成。 var str = "a,b,c,70,90."; var str2 = str.replace(/[ , , .]/g, "。"); //g是替換全部 console.log(str2); var stra = " abc " function MyTirm(stra) { var str3 = stra.replace(/^\s+|\s+$/g, ""); //去掉前后空格空格換成空字符串 return str3; } var str2 = MyTirm(stra); console.log("==" + str2 + "==");
//想要的字符提取出來,提取郵箱 //來不及寫
//math,提取符合要求的元素
//分組提取,提取郵箱的每一個(gè)部分
RegExp.$1, RegExp.$2, RegExp.$3
//檢索字符indexof();lastindexof();返回下標(biāo)
var str = "張三:1000,李四:5000,王五:8000。"; var arr = str.match(/\d+/g); console.log(arr); //math返回?cái)?shù)組,提取元素
//exec只取一個(gè),math可以取全部的
//正則對象:test,exec........字符串:math,spilt,search,
//用某個(gè)字符分隔字符串
var str = "123123@xx.com,fangfang@valuedopinions.cn 286669312@qq.com 2、emailenglish@emailenglish.englishtown.com 286669312@qq.com..."; var arr = str.match(/\w+@\w+(\.\w+)+/g); console.log(arr);
//6 分組提取
//提取email中的每一部分 var str = "123123@xx.com"; var reg = /(\w+)@(\w+)\.(\w+)(\.\w+)?/; var array = str.match(reg); //獲取分組的數(shù)據(jù) ()是分組 console.log(RegExp.$1); //123123 console.log(RegExp.$2); //xx console.log(RegExp.$3); //com //分組練習(xí) var str = "5=a, 6=b, 7=c"; str = str.replace(/(\d)=(\w)/g, "$2====$1"); //吧567分3組,吧abc分3組,2組在前面,1組在后面 console.log(str);
//i 忽略大小寫
//g 全局匹配
//控制字符串相關(guān)方法
//1、正則對象的 test exec
//2、字符串的 replace search match split
//用法:
console.log(/\d/.test("123")); console.log(/[\u4e00-\u9fa5]{3}/.test("哈你好")); //除了.test和search方法能直接執(zhí)行,math,replace,split,exec都需要數(shù)組接收返回值 var str = "abc100,ccc200,ddd300"; var arr = /\d+/.exec(str); console.log(arr + "這兒"); //100//只能匹配一項(xiàng),可以用在分組匹配 var arr = str.match(/\d+/g); console.log(arr); var str = "abc100ccc200ddd300"; var arr = str.split(/\d+/); console.log(arr); var str = "哈哈哈哈,100分"; //檢索里面數(shù)字出現(xiàn)的下標(biāo) console.log(str.search(/\d+/)); var str = "abcdebfg"; var strNew = str.replace("b", "d"); console.log(strNew); console.log(str); var v = 2 new RegExp("^\\d+" + v + "$").test(12) //true
以上就是如何正確的使用正則表達(dá)式,小編相信有部分知識點(diǎn)可能是我們?nèi)粘9ぷ鲿姷交蛴玫降?。希望你能通過這篇文章學(xué)到更多知識。更多詳情敬請關(guān)注億速云行業(yè)資訊頻道。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。