js正则表达式的基本用法详解
var reg=/b/; //匹配字符串中的b字符 reg.test("abc"); //正则表达式的test用来检测字符串是否满足正则表达式的要求; //由于"abc"中存在b,所以是符合要求的,所以这段代码的返回值为:true const isTrue = reg.test("coke"); //由于"coke"中不存在b字符,所以不符合条件 -->isTrue:false var reg2=/abc/; reg2.test("adbcd"); //字符串中必然存在"abc"才符合要求,所以这段代码的返回值为false reg2.test("1abc"); //true reg2.test("abc123"); //true reg2.test("abcabc"); //true
var reg=/./; reg.test("a"); //true reg.test("."); //true reg.test("\r"); //false reg.test("1\r"); //存在一个1,不是换行符,所以结果为:true reg.test("\r\n"); //false //注意点:如果以后要匹配.字符,不要直接写. //为了匹配qq邮箱,写了 /qq.com/ 这是一个错误的写法: //=>/qq.com/不仅匹配:"qq.com"也匹配"qq1com" "qq@com" //解决方案:/qq\.com/ 或者 /qq[.]com/
\d 表示数字
var reg=/\d/; reg.test("1abc"); //由于存在一个数字,所以结果为true reg.test("abcde"); //由于不存在任何数字,所以结果为false //扩展: var _reg=/\d\d/; _reg.test("1b"); //不存在2个连续数字,所以结果为:false _reg.test("a12c"); //存在2个连续数字,结果为:true
\D 是\d的取反结果,表示不是数字
var reg=/\D/; reg.test("123"); //由于全是数字,所以结果为:false reg.test("123a"); //存在一个字母,所以结果为:true var reg2=/123\D5/; reg2.test("12345"); //false reg2.test("123b5"); //true
\w 匹配字母、数字、下划线 ,三者满足其一即可
var reg=/\w/; reg.test("123"); //存在数字,结果为:true reg.test("a"); //true reg.test("1"); //true reg.test("_"); //true reg.test("-"); //false reg.test("."); //false reg.test("1."); //true reg.test("_\r"); //true reg.test("\r"); //false
\W 是\w的取反
\s 表示一个空白字符(例如:\r \n \t 空格 。。。)
var reg=/\s/; reg.test("abc def"); //存在一个空白,结果为:true reg.test("abc\r123"); //存在一个\r,结果为:true reg.test("abc"); //false
\S 是\s的取反
var reg=/\S/; reg.test(" \r \n "); //全是空白字符,结果为false reg.test("123 abc"); //存在一个空白,结果为true var reg3=/\s\S/; reg3.test(" a"); //true reg3.test("a "); //存在空白字符和非空白字符,但不符合正则的顺序,false reg3.test("a b"); //true
\ 转义字符
var reg=/\./; //匹配.字符 var reg=/\//; //匹配一个正斜杠:/
var reg=/[1a2b3]/; //匹配这5个字符中的其中一个,只要满足其中,就是符合要求的 reg.test("a"); //结果为:true reg.test("3"); //结果为:true reg.test("cd56789"); //一个符合要求的字符都不存在,结果为:false reg.test("a55555"); //结果为:true var reg2=/[123][abc]/; reg2.test("2a"); //true reg2.test("3c"); //true reg2.test("defgh1c"); //存在符合条件的1c,结果为:true reg2.test("39"); //不满足 var reg2=/[0-9]/; //匹配数字0-9之间,任何一个数字 等价于:/\d/ var reg3=/[a-z]/; //匹配小写字母 var reg4=/[A-Z]/; //匹配大写字母 var reg5=/[a-zA-Z]/;//匹配所有字母 var reg6=/[A-Za-z]/;//.......... var reg10=/[0-9abc]/; reg10.test("3");//true reg10.test("five");//false reg10.test("banana");//true
[^]
var reg=/[^123]/; //不是1 并且 不是2 并且 不是3 reg.test("a"); //true reg.test("3"); //false reg.test("123"); //没有1,2,3以外的字符,结果为:false
var reg=/^abc/; //表示以abc开头 reg.test("123abc123"); //并不是以abc开头,结果为:false reg.test("abc123"); //以abc开头,结果为:true var reg=/abc$/; //表示以abc结尾 reg.test("123abc"); //结果为:true reg.test("abc123"); //结果为:false var reg=/^abc$/; //表示字符串abc reg.test("abc"); //结果为:true reg.test("123abc"); //结果为:false
var reg=/\d*/; reg.test("123"); //true reg.test("234"); //true reg.test(""); //true var reg3=/1\d*/; reg3.test("123"); //true reg3.test("a123") //true reg3.test("a2b"); //false
var reg=/abc{3}/; //表示匹配abccc reg.test("123abccc123"); //结果为:true
var reg=/abc|123/; //表示匹配abc或者123
var reg=/(\d{3-4})-(\d{7,8})/; var arr="021-33335555".match(/(\d{3,4})-(\d{7,8})/); //这个方法是查找一个或多个正则表达式的匹配。 arr[0] //全部 arr[1] //021 arr[2] //333355555 var reg=/(\d{3-4})-(\d{7,8})/; var str = "021-33335555"; str.replace(/(\d{3,4})-(\d{7,8})/,'$1'); //这个方法是在字符串中查找匹配的子串, 并替换与正则表达式匹配的子串。 //021 返回分组后'$1'对应的字符串替换正则匹配到的所有字符 str.replace(/(\d{3,4})-(\d{7,8})/,'$2'); //33335555 返回分组后'$2'对应的字符串替换正则匹配到的所有字符
var reg =/^1[3-9][0-9]\d{8}$/;