javascript
JavaScript-正则表达式
1.創(chuàng)建方式
構(gòu)造函數(shù)創(chuàng)建
var str = 'hello world'; var reg1 = new RegExp('e','ig') console.log(reg1)參數(shù)1 正則表達式(不能有空格) 參數(shù)2 匹配模式:常用g(全局匹配;找到所有匹配,而不是第一個匹配后停止)和 i(忽略大小寫)字面量方式創(chuàng)建
var reg2 = /o/gi; 檢測字符o,不區(qū)分大小寫,全局匹配?
2.方法
test()
檢測字符串中是否包含定義字符模式
console.log(reg1.test(str));exec()
檢索字符串中指定的值。匹配成功返回一個數(shù)組,匹配失敗返回null
console.log(reg1.exec(str));["o", index: 0, input: "oweb", groups: undefined] 第 1 個元素是與 RegExpObject 的第 1 個子表達式相匹配的文本(如果有的話), 第 2 個元素是與 RegExpObject 的第 2 個子表達式相匹配的文本(如果有的話),以此類推。 除了數(shù)組元素和 length 屬性之外,exec() 方法還返回兩個屬性。 index 屬性聲明的是匹配文本的第一個字符的位置。 input 屬性則存放的是被檢索的字符串 string。
match()
在字符串內(nèi)檢索指定的值,匹配成功返回存放匹配結(jié)果的數(shù)組,否則返回null
console.log(str.match(reg1));search()
在字符串內(nèi)檢索指定的值,匹配成功返回第一個匹配成功的字符串片段開始的位置,否則返回-1.
var reg = /javascript/i; console.log('hello Javascript Javascript Javascript'.search(reg)); //6replace()
替換與正則表達式匹配的字串,并返回替換后的字符串。在不設(shè)置全局匹配g的時候,只替換第一個匹配成功的字符串片段。
var reg1=/javascript/i; var reg2=/javascript/ig; console.log('hello Javascript Javascript Javascript'.replace(reg1,'js')); //hello js Javascript Javascript console.log('hello Javascript Javascript Javascript'.replace(reg2,'js')); //hello js js jssplit()
把一個字符串分割成字符串數(shù)組
var reg1 = /cr/i;console.log('hello Javascript'.split(reg1));// ["hello Javas", "ipt"]?
3.元字符(匹配的規(guī)則)
單個字符和數(shù)字
- .
匹配除換行符意外的任意字符
var str = "oweb";var reg = /./g;console.log(reg.exec(str)); // ["o", index: 0, input: "oweb", groups: undefined]var str2 = "www.baidu.com";var reg2 = /www\......\.com/g;console.log(reg2.exec(str2)); //["www.baidu.com", index: 0, input: "www.baidu.com", groups: undefined]- [ ]
匹配[ ]里面的任意一個字符
var str = "4awebadsads";var reg1 = /[a-zA-Z0-9]/g;console.log(str.match(reg1)); // (11)?["4", "a", "w", "e", "b", "a", "d", "s", "a", "d", "s"]var str2 = "1s34";var reg2 = /[0-9][0-9][0-9]/; // 匹配連續(xù)三個都是數(shù)字 console.log(reg2.exec(str2)); // null- [^]
所有不在這個范圍內(nèi)的字符
var str = "abd";var reg = /[^a-z]/g;console.log(reg.exec(str));//null- \d 和 \D
- \w 和 \W
- \s 和 \S
- ^
以什么開頭
var str = "www."; var reg10 = /^www/g; // ^字符 console.log(reg10.exec(str));//["www", index: 0, input: "www.", groups: undefined]- $
以什么結(jié)尾
var reg11 = /www\.$/g; //字符$ console.log(reg11.exec(str));//["www.", index: 0, input: "www.", groups: undefined]重復(fù)的字符
- ?
匹配前面的字符0個或1個
var strs = "webr44546ere";var reg12 = /[0-9]?/g;console.log(reg12.exec(strs));//["", index: 0, input: "webr44546ere", groups: undefined] 非貪婪模式- *
匹配0個或任意多個字符 --- 貪婪匹配
var reg13 = /[a-z]*/g; //匹配小寫字母,0個或多個 console.log(reg13.exec(strs));// ["webr", index: 0, input: "webr44546ere", groups: undefined]- +
至少匹配一次
var reg14 = /\d+/g;console.log(reg14.exec(strs));//["44546", index: 4, input: "webr44546ere", groups: undefined]- {}
{10}:匹配連續(xù)的10個字符
var stra = "11274567800";var rega = /^1\d{10}$/g; //匹配連續(xù)的10個數(shù)字 console.log(rega.exec(stra));//["11274567800", index: 0, input: "11274567800", groups: undefined]{1, 4}:最少1個 最多4個? ? --- 貪婪模式
var strb = "edg";var regb = /^[a-zA-z]{2,3}$/g;console.log(regb.exec(strb));//["edg", index: 0, input: "edg", groups: undefined]- ||
或者
var strc = "www.google";var regc = /www.baidu|google|ujiuye/g;console.log(regc.exec(strc));//["google", index: 4, input: "www.google", groups: undefined]- ()
分組
var strc = "www.google";var regc = /www.(baidu)|(google)|(ujiuye)/g;console.log(regc.exec(strc));// ["google", undefined, "google", undefined, index: 4, input: "www.google", groups: undefined]?
?
相關(guān)練習:
1.檢索字符串中是否不包含字母
var reg = /[a-z]/ig;var str1 = 99;var str2 = "8u999";console.log(reg.test(str1)); //falseconsole.log(reg.test(str2)); //true2.去除字符串首尾空格
var reg = /\s/g;var str = 'hello world';console.log(str.replace(reg, ''));// helloworld3.檢查用戶賬號
function checkUser(str) {var re = /^[a-zA-z]\w{3,15}$/;if(re.test(str)) {console.log("正確");} else {console.log("錯誤");}}checkUser("alex_hah"); //調(diào)用//正確4.匹配11位手機號碼
function checkPhone(num) {var reg = /^1\d{10}$/gif (reg.test(num)){console.log('正確');}else{console.log('錯誤');}}checkPhone(13192611098)//正確5.匹配電話號碼
驗證規(guī)則:區(qū)號加號碼,區(qū)號以0開頭,3位或者4位
號碼由7位或8位數(shù)字組成,區(qū)號與號碼之間可以無連接符,也可以"-"連接
function checkPhone(num) {var reg = /^0\d{2,3}-?\d{7,8}$/;if(reg.test(num)){console.log("正確");}else{console.log("錯誤");}}checkPhone("095-57777777"); //調(diào)用// 正確6.驗證郵箱
驗證:把郵箱地址分成" 第一部分@第二部分 " 這樣,第一部分:由字母、數(shù)字、下劃線、短線"-"、點號“.”組成;
第二部分:為一個域名,域名由字母、數(shù)字、短線"-"、域名后綴組成。
// 而域名后綴一般為.xxx或.xxx.xx, 一區(qū)的域名后綴一般為2 - 4 位, 如cn, com, net, 現(xiàn)在域名有的也會大于4位?
function checkEmail(str) {var re = /^(\w-*\.*)+@(\w-?)+(\.\w{2,})+$/ ;if(re.test(str)) {console.log("正確");} else {console.log("錯誤");}}checkEmail("alex@cnblogs.cn"); //調(diào)用// 正確?
轉(zhuǎn)載于:https://www.cnblogs.com/Xuuuuuu/p/10507262.html
總結(jié)
以上是生活随笔為你收集整理的JavaScript-正则表达式的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 周公解梦梦到捡钱是什么征兆
- 下一篇: 梦到老鼠被猫抓了是什么意思