javascript 正则表达
/** *========================================== * 正则表达 * 格式 /表达式/g 或 new RegExp('表达式') * ========================================== * */ let str = "{ {a:1}, {b:2}}, {cc:334 44333} ,{ddd:444}}, {ee5e:55e5}}, {5ff-5:5ff-5}} "; // \d 匹配一个数字,\d\d匹配两个数字,有多少个\d匹配多少个数字 console.log( "\\d\\d数字匹配-->>",str.match(/\d\d/g) ) // \w 匹配一个字母或数字 \w\w 匹配两个字母或数字,有多少个\w匹配多少个字母或数字 console.log( "\\w\\w匹配-->>",str.match(/\w\w/g) ) // \d\w 匹配两个数字或一个数字一个字母 console.log( "\\d\\w匹配-->>",str.match(/\d\w/g) ) // .可以匹配任意字符 console.log(".任意字符匹配-->>", str.match(/ee./g) ) // *表示任意个字符 console.log("*任意个字符匹配-->>", str.match(/\w*/g) ) // +表示至少一个字符 console.log("+至少一个字符匹配-->>", str.match(/\d+/g) ) console.log("+至少一个e字符匹配-->>", str.match(/e+/g) ) // \s匹配一个空格 console.log("\\s匹配一个空格-->>", str.match(/\s+/g) ) /** * ?匹配0个或1个字符 * {n}表示n个字符 * {n,m}表示n-m个字符: * */ /** * \d{3}\s+\d{3,8} * 从左往右解读 * \d匹配一个数字,{3}配三个,所以\d{3}匹配3个数字,当然也可以写成\d\d\d * \s匹配一个空格,+表示至少一个字符,\s+表示至少一个字符 * 后面{3,8}表示3-8个字符 * 即匹配 3个数字+至少1个空格+ 3-8个数字 * */ console.log( "\\d\{3\}\\d\{3,8\}匹配-->>", str.match(/\d{3}\s+\d{3,8}/g) ) /** * 如果匹配电话号码 xxx-xxxxxxxx 的格式,x表示任意数字 * 解读格式为 * 3个数字 [\d{3}] * 1个短横杆 [-] * 8个数字 [\d{8}] * 组合为 :\d{3}-\d{8} * 表达式 :/\d{3}-\d{8}/g * * 如果是匹配11位电话号码 * 直接 \d{11} * */ let phone1 = "{phone:123-12345678 }" let phone2 = "{phone:123-1234567 }" console.log( "匹配电话号码-->>",phone1.match( /\d{3}-\d{8}/g ) ); // 输出123-12345678 console.log( "匹配电话号码-->>",phone2.match( /\d{3}-\d{8}/g ) ); // 输出null /** * =========================================== * 进阶 * =========================================== * */ /** * []表示范围 * [0-9a-zA-Z\_] 可以匹配一个数字、字母或者下划线 * [0-9a-zA-Z\_]+可以匹配至少一个数字、字母或者下划线 * */ console.log( "[0-9a-zA-Z\_]匹配一个数字、字母或者下划线-->>",str.match( /[0-9a-zA-Z\_][0-9a-zA-Z\_]/g ) ) /** * [a-zA-Z\_\$][0-9a-zA-Z\_\$]* * [a-zA-Z\_\$] 匹配一个字母、下滑线或$符号 * [0-9a-zA-Z\_\$]* 匹配任意一个字母、下滑线或$符号 * [a-zA-Z\_\$][0-9a-zA-Z\_\$]* 匹配 一个字母、下滑线或$符号+任意一个字母、下滑线或$符号 * */ console.log( "[a-zA-Z\_\$][0-9a-zA-Z\_\$]*匹配一个字母、下滑线或$符号+任意一个字母、下滑线或$符号-->>",str.match( /[a-zA-Z\_\$][0-9a-zA-Z\_\$]*/g ) ) /** * 同样也可以是用{n},{n,m}、+、*、? 等修饰符 * 如: * [a-zA-Z\_\$]{n} * [a-zA-Z\_\$]{n,m} * [a-zA-Z\_\$]+ * [a-zA-Z\_\$]* * [a-zA-Z\_\$]? 等 * */ console.log( str.match(/[a-zA-Z\_\$]{3}/g ) ) console.log( str.match(/[a-zA-Z\_\$]{3,8}/g ) ) console.log( str.match(/[a-zA-Z\_\$]{3}\w+/g ) ) console.log( str.match(/[a-zA-Z\_\$]{3}\w*/g ) ) console.log( str.match(/[a-zA-Z\_\$]{3}\w?/g ) ) /** * ^表示行的开头,^\d表示必须以数字开头。 * $表示行的结束,\d$表示必须以数字结束。 * 用()表示的就是要提取的分组(Group) * 果正则表达式中定义了组,就可以在RegExp对象上用exec()方法提取出子串来。 * */ let str2 = "5ff-5:5ff-5" console.log( "^与$匹配", str2.match (/^(\d)[0-9a-zA-Z\-\:]*(\d)$/g ) ) var re = /^(\d{3})-(\d{3,8})$/g; console.log( ('010-12345').match(re) ); // ['010-12345', '010', '12345'] var emailStr = "aaaaaaaaaaa@qq.com"; console.log ( emailStr.match(/\w+@qq.com$/g ) ) ;
原创文章,作者:ourygey,如若转载,请注明出处:https://ourygey.com/2021/10/09/javascript-%e6%ad%a3%e5%88%99%e8%a1%a8%e8%be%be/