# 元字符的应用 # []整括号的注意 - 1、在整括号中出现的所有的字符都是代表本身意思的字符(没有特殊的含义,\d这种特殊) var reg = /^[.]\d+$/; console.log(reg.test("46545"));//->false console.log(reg.test(".89"));//->true var reg1 = /^[.]\d+[+]$/; console.log(reg1.test("46545"));//->false console.log(reg1.test(".89+"));//->true var reg2 = /^[.]\d+0[\d+]$/; console.log(reg2.test("46545"));//->false console.log(reg2.test(".465045"));//->true 如果是465045就是false console.log(reg2.test(".890+"));//->true - 2、整括号中不识别两位数,整括号内是多个取一个 var reg1 = /^[12]$/;//->1或者2中的一个 console.log(reg1.test("12"));//false console.log(reg1.test("1"));//true console.log(reg1.test("2"));//true var reg2 = /^[12-48]$/;//->1、2-6中的一个、8 三个中的一个 console.log(reg2.test("128"));//false console.log(reg2.test("138"));//false console.log(reg2.test("158"));//false console.log(reg2.test("1"));//true console.log(reg2.test("3"));//true console.log(reg2.test("5"));//true console.log(reg2.test("8"));//true console.log(reg2.test("13"));//false var reg = /^[\w-]$/;//->数字、字母、下划线、- 中的一个 console.log(reg.test("-"));//true console.log(reg.test("89"));//false console.log(reg.test("_"));//true # ()整括号的另外作用:改变x|y的默认的优先级; > |的优先级很高; > 功能:替换,"或"操作字符具有高于替换运算符的优先级,使得"m|food"匹配"m"或"food"。若要匹配"mood"或"food",请使用括号创建子表达式,从而产生"(m|f)ood"。 var reg1 = /^18|19$/; //错误分析:想匹配119和189,1开始,9结尾,中间是8或者1的任意一个; //实际可以这些数字都是可以匹配成功的:18、19、181、189、119、819、1819... console.log(reg1.test("19"));//true console.log(reg1.test("18"));//true console.log(reg1.test("119"));//true console.log(reg1.test("189"));//true console.log("test 189999999999",reg1.test("189999999999"));//true console.log("test 819",reg1.test("819"));//true console.log("test 1819",reg1.test("1819"));//true console.log("test 1889899819",reg1.test("1889899819 "));//true //正确分析:18|19 可以匹配18开头或者19结尾的;(18开头)、(19结尾)、(18开头和19几位的),都可以匹配成功; //|替换,"或"操作字符具有高于替换运算符的优先级,使得"m|food"匹配"m"或"food"。若要匹配"mood"或"food",请使用括号创建子表达式,从而产生"(m|f)ood"。 var testReg1=/m|food/; //匹配(m开头)、(food结尾)、(m开头或者food结尾);这三种都可以匹配 console.log("test m",testReg1.test("m"));//true console.log("test m464545646565",testReg1.test("m464545646565"));//true console.log("test mood",testReg1.test("mood"));//true console.log("test food",testReg1.test("food"));//true var testReg2=/(m|f)ood/; //匹配mood/food console.log("test m",testReg2.test("m"));//false console.log("test m464545646565",testReg2.test("m464545646565"));//false console.log("test mood",testReg2.test("mood"));//true console.log("test food",testReg2.test("food"));//true var reg2 = /^(18|19)$/; //18、19 console.log(reg2.test("19"));//true console.log(reg2.test("18"));//true console.log(reg2.test("119"));//false console.log(reg2.test("189"));//false var reg3 = /^1[8|1]9$/; //119、189 console.log("test 19",reg3.test("19"));//false console.log(reg3.test("18"));//false console.log(reg3.test("119"));//true console.log(reg3.test("189"));//true # 正则实践 - 1、**有效数字的正则(可以是 正数、负数、零、小数 )** - 1)、"."可以出现也可以不出现,但是一旦出现,后面必须跟着一位或者多位数字 - 2)、最开始可以有+/- 也可以没有 - 3)、整数部分,一位数可以是0-9之间的一个,多位数不能以0开头 var reg = /^[+-]?(\d|([1-9]\d+))(\.\d+)?$/;//.是一个元字符,所以需要转义; console.log("test +1",reg.test("+1"));//true console.log("test +-1",reg.test("+-1"));//false console.log("test -1.001",reg.test("-1.001"));//true console.log("test -1.001.002",reg.test("-1.001.002"));//false console.log("test 0",reg.test("0"));//true - 2、年龄介于18~65之间 - 18~65可以分为三份;18-19 20-59 60-65 - 因为1开头的不能是12,15,14这些; - 6开头的不能是66,68这些; - 2和5开头,后面可以随便,0-9都可以; var reg = /^(1[8-9]|[2-5]\d|6[0-5])$/; console.log("test 18",reg.test("18"));//true console.log("test 12",reg.test("12"));//false console.log("test 20",reg.test("20"));//true console.log("test 65",reg.test("65"));//true console.log("test 69",reg.test("69"));//false - 3、验证邮箱的正则(简版) - 左边:数字、字母、下环线、.、- var reg = /^[\w.-]+@[0-9a-zA-Z]+(\.[a-zA-Z]{2,4}){1,2}$/; /* * \w:数字、字母、下划线中的任意一个字符 [0-9a-zA-Z_] * [\w.-]:[\w]、[.]、[-]三者中的任意一个,出现一次或者多次; * [0-9a-zA-Z]:大小写,或者数字; * (\.[a-zA-Z]{2,4}) .后面加2-4位大小写的域名,比如.com .cn * {1,2} 出现一次或者两次。可能是顶级域名,也可能是二级域名; * */ console.log(reg.test("weqwes@sina.com.cn"));//true - 4、汉字昵称 2-4位汉字 var reg = /^[\u4e00-\u9fa5]{2,4}$/; - 5、身份证号码 var reg1 = /^\d{17}(\d|X|x)$/; //342224199004281111X var reg2 = /^(\d{2})(\d{4})(\d{4})(\d{2})(\d{2})(\d{2})(\d)(\d|X|x)$/; console.log("test 34222819000428111x",reg1.test("34222819000428111x"));//true console.log("test 34222819000428111X",reg1.test("34222819000428111X"));//true console.log("test 34222819000428111x",reg2.test("34222819000428111x"));//true console.log("test 34222819000428111X",reg2.exec("34222819000428111X"));//["34222819000428111X", "34", "2228", "1900", "04", "28", "11", "1", "X", index: 0, input: "34222819000428111X"] - 6.匹配整数或者0-8位小数; const test0 = "01";//true const test1 = "1.";//true const test2 = "5";//true const test3 = "999999999.34546782";//true const test4 = "5.10";//true const test5 = "123.45678.908";//false const test6 = "1s34.5678";//false const test7 = "1s34.3454678332";//false const test8 = "123.45678.";//false 代码如下 const reg=/^\d{1,}\.?\d{0,8}$/; const test0 = "01";//true const test1 = "1.";//true const test2 = "5";//true const test3 = "999999999.34546782";//true const test4 = "5.10";//true const test5 = "123.45678.908";//false const test6 = "1s34.5678";//false const test7 = "1s34.3454678332";//false const test8 = "123.45678.";//false console.log(reg.test(test0)); console.log(reg.test(test1)); console.log(reg.test(test2)); console.log(reg.test(test3)); console.log(reg.test(test4)); console.log("----"); console.log(reg.test(test5)); console.log(reg.test(test6)); console.log(reg.test(test7)); console.log(reg.test(test8));