简单实例来一个
var str = "123abc";
var patt1 = /^[0-9]+abc$/;
console.log(str.match(patt1)[0]);
匹配前面是数字并且以abc结尾的字符串(123abc)
// 正则表达式概念 // 正则表达式使用单个字符串来描述,匹配一系列符合某个句法规则的字符串搜索模式 // 用某种模式去匹配一类字符串的公式 // 语法 (构造正则) //方法1、 构造函数:var reg=new RegExp("正则表达式","修饰符"); reg--regular:规则 exp--expression:表达 //方法2、 var reg=/正则表达式/修饰符;(常用方法) pattern:典范、模式 modifiers:修饰语 // 修饰符 // i :执行对大小写不敏感的匹配 // g :执行全局匹配(查找所有匹配而非在找到第一个匹配后停止) // m :执行多行匹配 // 例子 // 创建一个要检测的变量 var str="abc"; //26个英文字母 a-z // 创建一个正则 var regular=/[a-z]/; // 检测 方法1 console.log(regular.test(str));//true 返回值为true时,代表匹配 返回值为false时,代表不匹配 // 检测 方法2 console.log(regular.exec(str));// ["a",index:0,input:"abc"] // 次检测方法返回的是一个数组 // 数组的第一个元素:匹配的内容 // 数组的index元素:匹配内容的第一个字符串索引下标 // 数组的input元素:返回原始字符串 // 检测一个字符串是否与正则相匹配 返回的值为布尔值 // 方法1: reg.test(string); reg是创建的正则表达式 test:实验,测验 // 方法2: reg.exec(string); // 正则表达式的方法 // string类中支持正则的方法 /*search()方法-使用正则表达式来检索字符串中的kgc*/ /*match()方法-使用正则表达式来检索字符串中的所有数字*/ /*replace()方法-使用"kgc"替换字符串中的"huyang"*/ /*split()方法-把单词分隔为字母*/ /*验证26个英文字母组成的字符串*/ /*验证由数字和26个英文字母组成的字符串*/ // search()的用法 检索字符串中的字符 var str="hello kgc"; console.log(str.search(/kgc/));//6 代表此字符串的下标是6 console.log(str.search(/KGC/));//-1 代表不存在 console.log(str.search(/KGC/i));//6 加了i之后 i是修饰符,代表执行对大小写不敏感的匹配 // search();若找到 返回字符串的下标 若没找到返回-1 // match()的使用方法 检索字符串中的所有数字 var str="1 and 2 and 3"; console.log(str.match(/d/));//["1",index:0,input:"1 and 2 and 3"] d:代表数字 console.log(str.match(/d/g));//["1","2","3"] 加了g只后, g是修饰符,代表执行全局匹配 console.log(str.match(/kgc/));//null 若不存在,返回null // 如果没有找到任何匹配的文本,返回null。否则,它将返回一个数组(依赖于是否具有全局标志g) // replace()的用法 用新字符串替换字符串中的字符产生一个新字符串 var str="hello huyang"; console.log(str.replace(/huyang/,"kgc"));//hello kgc var str="hello huyang,how are you?huyang"; console.log(str.replace(/huyang/g,"kgc"));//hello kgc,how are you?kgc // 返回一个新的字符串 // split()的使用方法 把单词分隔成字母 var str="hello"; console.log(str.split(""));//["h","e","l","l","o"] console.log(str.split("",3));//["h","e","l"] 3代表只要前3个字符 console.log(str.split(" "));//["hello"] console.log(str.split("1"));//["hello"] // 常用的表达式 // [a-z] :查找任何从小写a到小写z的字符 // [A-Z] :查找任何从大写A到大写Z的字符 // [0-9] :查找任何从0至9的数字 // [abc] :查找括号内的任意一个字符 abc:代表任何字符 // [^abc] :查找括号内的任意字符 // var reg=/^[a-zA-Z]$/ 这里的^ $ :代表从^开始 到$结束 // 常用的元字符(特殊字符) // w :匹配数字、字母,下划线 等价于[a-zA-Z0-9] // W :匹配非数字、字母、下划线 等价于[^a-zA-Z0-9] // d :匹配数字 // D :匹配非数字 // s :匹配空白字符(空格、换行) // S :匹配非空白字符 // :匹配换行符 // 常用的限定符 // * :匹配前面的子表达式零次或多次 // + :匹配前面的子表达式一次货多次 // ? :匹配前面的子表达式零次或一次 // {n} :匹配确定的n次 // {n,} :至少匹配n次 // {n,m} :最少匹配n次且最多匹配m次 // 练习 /*验证26个英文字母组成的字符串*/ var str="sdaAHSHsffsefsRFGDGDefgs"; var reg=/[a-zA-Z]/; var reg1=/^[a-zA-Z]$/; //从^开始$结束 只能匹配一次 所以返回false var reg2=/^[a-zA-Z]+$/; //+代表匹配一次或多次 console.log(reg.test(str));//true console.log(reg1.test(str));//false console.log(reg2.test(str));//true /*验证由数字和26个英文字母组成的字符串*/ var str="1232fdss3343r5rfdsf"; var reg=/^[a-zA-Z0-9]+$/; console.log(reg.test(str));//true /*验证由数字字母下划线组成的字符串*/ var str="123a_v_f"; var reg=/^w+$/; // w:匹配数字、字母、下划线 console.log(reg.test(str));//true /*验证汉字*/ var str="我是汉字"; var reg=/^[u4e00-u9fa5]+$/; console.log(reg.test(str));//true // [u4e00-u9fa5] 代表汉字 记忆方法:有事100,有酒罚我
自创一个匹配规则:
只要含有@符(@符号可以出现一次或多次)
var str = "12@3abc"; var patt1 = /@+/; console.log(patt1.test(str));
手机号:
/^1[3456789]d{9}$/.test(value)
邮箱:
var emailReg = new RegExp(/^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/); //邮箱验证
匹配一个字符串 是否存在
regMatch(reg,str){//匹配reg是否出现在str内 reg=new RegExp(reg); if(str.search(reg)>=0){ return true; }else{ return false; } }
使用:
console.log(regMatch("中宾",str));
[^xyz]
负值字符集合。匹配未包含的任意字符。例如, '[^abc]' 可以匹配 "plain" 中的'p'、'l'、'i'、'n'。
。
// 匹配字符串中的数字 且将数字统一删除 let str = 'abcd1 dsfdfds3 fdfsfdsf6'; let reg = /d/g; let noNum = str.replace(reg,(result,index)=>{ console.log(result,index); return result.replace(/d/,'') }) console.log(str); console.log(a);
。