本代码经测试可完美运行,有问题者可发送邮件到:CarsonRyan696@gmail.com
console.show()
/**
* test方法:
* 格式为:规则.test(字符串)
* 作用:用来判断字符串中是否含有此规则的字符 有返回true 没有返回false
*/
var rule = /he/;//这是要匹配的规则
var str = "he"; //这是要匹配的字符串
console.info(rule.test(str));//返回:true
var str = "we";
console.info(rule.test(str));//返回:false
/*-------------------------------------------------------------*/
var rule = /he/;//这是要匹配的规则
var str = "HE"; //这是要匹配的字符串
console.info(rule.test(str));//返回:false 这里是区分大小写的
//如果想要不区分大小写匹配的话,需要修改规则!
var rule = /he/i; //在规则后方加上i就可以了
console.info(rule.test(str));//返回:true
var str = "Certainly!He loves her!";
console.info(rule.test(str));//返回:true,只要包含he或HE就符合
/*-------------------------------------------------------------*/
var str = "Certainly!He loves her!";
var rule = /^he/i; //(^)代表字符开始位置 这个规则的意思是:不区分大小写匹配he开头的字符 如果he在开头返回true,否则返回false
console.info(rule.test(str));//返回:false 因为he不在str最开始,所以返回false
var str = "HE is a good boy!";
console.info(rule.test(str));//返回:true HE是字符开始位置,返回true
var rule = /^he$/i;//$表示字符结束位置 这个规则的意思是:不区分大小写匹配以he开头并以he结尾的字符 不可以带标点符号 否则也会返回false
console.info(rule.test(str));//返回:false HE是开头但不是结尾
var str = "He";
console.info(rule.test(str));//返回:true He是开头也是结尾
/*-------------------------------------------------------------*/
var rule = /\s/; // \s匹配任何空白字符,包括空格、制表符、换页符等等
var str = "user Name"; //用户名包含空白字符
console.info(rule.test(str));// 返回:true
var str = "user Name"; //用户名包含制表符
console.info(rule.test(str)); // 返回:true
var rule = /^[a-z]/i; // []:匹配指定范围内的任意字符 /^[a-z]/i:将不区分大小写匹配英文字母a-z开头的字符
var str = "variable Name"; //变量名必须以字母开头
console.info(rule.test(str)); // 返回:true
var str = "123abc";
console.info(rule.test(str)); // 返回: false
/*-------------------------------------------------------------*/
var osVersion = "Ubuntu 8";
var rule = /^[a-z]+\s+\d+$/i; // +:字符可以出现多次但至少要出现1次 \s:匹配空格字符 \d:匹配数字
//这个规则的意思是:不区分大小写匹配英文字母a-z开头,中间为空格字符,以数字结尾的字符,这些都至少出现一次,才返回true
console.info(rule.test(osVersion)); // 返回:true
/*-------------------------------------------------------------*/
var str = "?";
//var re = /?/;
//console.info(re.test(str));//报错:SyntaxError语法错误 因为?是元字符,必须转义。
var rule = /\?/;
console.info(rule.test(str));//返回:true
var str = "\?"; // \将?转义 相当于:var str = "?"
console.info(str); //只会输出符合 ?
var rule = /\\?/; //将匹配? 第一个\用来转义? 第二个\用来转义了\
console.info(str)
console.info(rule.test(str)); //true
var rule = new RegExp("\\?"); // 将匹配?
console.info(rule.test(str)); //true
/*=================================================================*/
/**
* 方法exec:
* 格式为:规则.exec(字符串)
* 作用:从字符串中,按照指定的规则取出字符。
*/
var osVersion = "Ubuntu 8";
var rule = /^[a-z]+\s+\d+$/i; //将取全部字符串
var arr = rule.exec(osVersion);
console.info(arr[0]); //返回:Ubuntu 8
var rule = /[a-z]+/i; //这个规则的意思是:不区分大小写取字符串中a-z的字母
var arr = rule.exec(osVersion);
console.info(arr[0]); //返回:Ubuntu
var rule = /\d+/; //这个规则的意思是:只取字符串中的数字
var arr = rule.exec(osVersion);
console.info(arr[0]); //返回:8
/*-------------------------------------------------------------*/
var osVersion = "Ubuntu 8";
var rule = /^[a-z]+\s+(\d+)$/i;//我们还可以用()来创建子匹配 ()里边就是子匹配的内容
var arr = rule.exec(osVersion);
console.info(arr[0]);//返回:Ubuntu 8
console.info(arr[1]);//返回:8 第一个子匹配
console.info(arr.length);//返回:2
var osVersion = "Ubuntu 8.10";//取出主版本号和次版本号
var rule = /^[a-z]+\s+(\d+)\.(\d+)$/i;// .属于正则表达式元字符之一,若要用它必须要用转义字符\进行转义 转义完成之后它就表示:一个普通的.
var arr = rule.exec(osVersion);
console.info(arr[0]);//返回:Ubuntu 8.10
console.info(arr[1]);//8
console.info(arr[2]);//10
/*=================================================================*/
/**
* 方法replace:
* 格式为:字符串.replace("原字符串中的字符","想要替换的字符")
* 作用:将字符串中某个确定的字符串,替换成想要的字符串!
*/
var str = "some money";
console.info(str.replace("some", "much")); //返回:much money
//replace的第一个参数可以为正则表达式
var rule = /\s/; //空白字符
console.info(str.replace(rule, "%"));//返回:some%money 按照(rule)指定规则,将(str)字符串中的空格字符变为%
//在不知道字符串中有多少空白字符时,正则表达式极为方便
var str = "some some \tsome\t\f"; // \t:制表符 \f:换页符
var rule = /\s+/; //一个正则表达式只能进行一次匹配,\s+匹配了第一个空格后就退出了
console.info(str.replace(rule, "#")); //返回:some#some some
var rule = /\s+/g; //g,全局标志,将使正则表达式匹配整个字符串
console.info(str.replace(rule, "@"));//some@some@some@
/*=================================================================*/
/**
* 与方法replace相似的是split:
* 格式为:字符串.split(正则表达式)
* 作用:将字符串按照指定的规则进行切割,并返回一个新的字符串数组。
*/
var str = "a-bd-c";
var arr = str.split("-");
console.info(arr) //返回:["a","bd","c"]
// -是我们确定的,但是如果我们不确定中间是什么字符,又该如何呢?
var str = "a_db-c-A";
var rule = /[^a-z]/i;//^不在[]表示字符开始,但在[]里它表示非的意思。 这个规则的意思是:不区分大小写匹配非a-z字母的字符
console.info(str.split(rule)) //返回:["a","db","c","A"] 匹配任何不在指定范围内的任意字符,这里将去除字母的所有字符
/*=================================================================*/
/**
* 在字符串中查找时我们常用indexOf,与之对应用于正则查找的方法是search
* 格式为:字符串.search(正则表达式)
* 作用:按照指定的规则在字符串中进行查找,并返回符合规则的字符的索引。
*/
var str = "My age is 18.Golden age!";//年龄不是一定的,我们用indexOf不能查找它的位置
var rule = /\d+/;
console.info(str.search(rule));//返回:10 10:查找到的字符串的索引
//注意,因为查找本身就是出现第一次就立即返回,所以无需在search时使用g标志
//下面的代码虽然不出错,但g标志是多余的
var rule=/\d+/g;
console.info(str.search(rule));//仍然是10
/*=================================================================*/
//"*"匹配它前面元字符0次或多次
/**
* 方法match:
* 格式为:字符串.match(正则表达式)
* 作用:可在字符串内检索指定的值,或找到一个或多个正则表达式的匹配。
*/
var str = "My name is CJ.Hello everyone!";
var rule = /[A-Z]/;//匹配所有大写字母
var arr = str.match(rule);//返回数组
console.info(arr);//数组中只会包含一个M,因为我们没有使用全局匹配
var rule = /[A-Z]/g;
var arr = str.match(rule);
console.info(arr);//['M','C','J','H']
//从字符串中抽取单词
var rule = /\b[a-z]*\b/gi; // \b:单词边界 *:匹配它前面元字符0次或多次
var str = "one two three four";
console.info(str.match(rule));//[ 'one', '', 'two', '', 'three', '', 'four', '' ]
/*=================================================================*/
//RegExp:正则表达式对象
//input:最后用于匹配的字符串(传递给test,exec方法的字符串)
var rule = /[A-Z]/;
var str = "Hello,World!!!";
var arr = rule.exec(str);
console.info(RegExp.input);//这里的输出应该是:Hello,World!!! 可以在浏览器运行,但是在autojs中没有输出,有点疑惑!
//lastMatch 最后匹配的字符
var rule = /[a-z]/g;
var str = "hi";
var arr = rule.test(str);
console.info(RegExp.lastMatch);//h
var arr = rule.test(str);
console.info(RegExp["$&"]);//i $&相当于是lastMatch的简写形式,必须要带[],否则会报错!
//lastParen 最后匹配的分组
var rule = /[a-z](\d+)/gi;
var str = "Class1 Class2 Class3";
var arr = rule.test(str);
console.info(RegExp.lastParen);//1
var arr = rule.test(str);
console.info(RegExp["$+"]);//2
//leftContext 返回被查找的字符串中,从开始位置到最后匹配成功的位置之前的字符
//rigthContext 返回被查找的字符串中,从开始位置到最后匹配成功的位置之后的字符
var rule = /[A-Z]/g;
var str = "123ABC456";
rule.test(str);
console.info(RegExp.leftContext);//123
console.info(RegExp.rightContext);//BC456
rule.test(str);
console.info(RegExp["$`"]);//123A
console.info(RegExp["$'"]);//C456
/*=================================================================*/
//简单类
var rule = /[abc123]/;//将匹配abc123这6个字符中一个
//负向类
var rule = /[^abc]/;//将匹配除abc之外的一个字符
//范围类
var rule = /[a-b]/;//将匹配小写a-b 26个字母
var rule = /[^0-9]/;//将匹配除0-9 10个字符之处的一个字符
//组合类
var rule = /[a-b0-9A-Z_]/;//将匹配字母,数字和下划线
/*=================================================================*/
var str = "abc";
var rule = /\w+/;//将匹配abc
console.info(rule.exec(str)[0]);
var rule = /\w+?/;//将匹配a
console.info(rule.exec(str)[0]);
var rule = /abc{2}/; //将匹配abcc
var rule = /(abc){1}/; //将匹配abcabc
//上面的分组都是捕获性分组
var str = "abcabc ###";
var arr = rule.exec(str);
console.info(arr[1]); //abc
var rule = /^a|bc$/; //将匹配开始位置的a或结束位置的bc
var str ="add";
console.info(rule.test(str)); //true
var rule = /^(a|bc)$/;//将匹配a或bc
var str ="bc";
console.info(rule.test(str));//true
/**
* 正则表达式是非常强大的,想学习更多正则请前往以下网址:
* https://www.w3school.com.cn/js/index.asp
* https://www.runoob.com/regexp/regexp-syntax.html
*/
整理了部分正则表达式!
最新推荐文章于 2024-07-17 18:07:51 发布