免费养殖网站模板各省网站备案时长
news/
2025/9/23 12:08:54/
文章来源:
免费养殖网站模板,各省网站备案时长,个人做网站有什么条件,重庆百姓网免费发布信息网正则表达式
关于正则表达式#xff0c;其实我写过几篇了#xff0c;但是真正的正则表达式其实主要用于定义一些字符串的规则#xff0c;计算机根据给出的正则表达式#xff0c;来检查一个字符串是否符合规则。 我们来看一下#xff0c;在JS中如何创建正则表达式对象。
语…正则表达式
关于正则表达式其实我写过几篇了但是真正的正则表达式其实主要用于定义一些字符串的规则计算机根据给出的正则表达式来检查一个字符串是否符合规则。 我们来看一下在JS中如何创建正则表达式对象。
语法
第一种创建方式
var 变量 new RegExp(正则表达式, 匹配模式);记得在使用typeof检查正则对象会返回一个Object对象。第二个参数有两个特殊的值 i 忽略大小写 例如 var reg new RegExp(a,i); var reg2/a/i; g 全局匹配模式
例如 var reg new RegExp(a);//这个正则表达式可以用来检查一下字符串中是否含有a正则表达式中区分大小写字母console.log(typeof reg);var strazdaszxc;var result reg.test(str);console.log(result);//结果输出是true即符合表达式第二种创建方式
使用正则表达式字面量将正则表达式包含在斜杠/ 中。
let regex /pattern/;例如
/**var 变量 new RegExp(正则表达式,匹配模式);*var 变量/正则表达式/匹配模式*/var reg new RegExp(a,i);console.log(reg.test(abc));var reg2/a/i;console.log(reg2.test(abc));//这两种方法都是一样的效果//创建一个正则表达式检查一个字符串中是否有a或者b//使用|表示或者的意思 例如/a|b/里面可以加入多个|不局限于数量var reg3/a | b/i;console.log(reg.test(wea));//创建一个正则表达式检查一个字符串中是否有字母//笨办法1 var reg/a|b|c|d|e|f|g|h|i|j|k等等/i//笨办法2 var reg/[abcdefg等等]/i 这样也表示a或者b或者c等等//[a-z]任意小写字母//[A-Z]任意大写字母//[A-z]任意字母//[]表示或者//[^ ]表示除了即判断字符串中是否有除开指定参数的其他参数有的话就输出truevar reg4/[0-9]/i;console.log(reg4.test(AISUDOHAasda415641785722132531531534sdasdaOUIFNUIASDHDFUASOI));//检查一个字符串中是否含有abc或者adc或者aec//因为开头都是a结尾都是c所以可以用如下办法var reg5/a[a-z]c/i;console.log(reg5.test(aac));测试匹配
使用 test() 方法来测试字符串是否与正则表达式匹配返回布尔值。例如let isMatch regex.test(str);
查找匹配
使用 match() 方法来查找字符串中与正则表达式匹配的部分返回匹配结果的数组。例如let matches str.match(regex);
//match()//可以根据正则表达式从一个字符串中奖符合条件的内容提取出来//默认情况下match()方法只会找到第一个符合要求的内容找到后就会停止检索//我们可以设置正则表达式为全局匹配模式这样就会匹配到所有的内容//可以为一个正则表达式设置多个匹配模式而且输入指定模式的字符顺序无比如ig或者gi皆可以//match()会将匹配到的内容封装到一个数组中即使只查询到一个结果var result3str.match(/[a-z]|[0-9]/gi);//在后面加一个g设置为全局匹配模式//增加一个i就表示忽略大小写这样就可以也输出大写字母console.log(result3);//这样就可以输出字符串中所有符合条件的内容console.log(result3[2]);//输出result3这个数组中的第三个元素也就是2console.log(result3[3]);//输出result3这个数组中的第四个元素也就是b//如果不设置为全局匹配模式那么就只能输出第一个符合要求的内容//如果在检索条件中增加一个[0-9]值域那么字符串中的数字也可以检索出来
替换匹配
使用 replace() 方法来替换字符串中与正则表达式匹配的部分返回替换后的新字符串。例如let newStr str.replace(regex, replacement);
//replace()//可以将字符串中的指定内容替换为新的内容//括号中有两个参数第一个参数是被替换的内容第二个参数是新的内容var result4 str.replace(a,###);console.log(result4);//也可以使用值域来进行替换var result5 str.replace(/[0-9]/g,数字);//通过值域来对指定对象进行替换把0-9所有的数字全部替换成汉字“数字”console.log(result5);//也可以使用空串来对指定内容进行剔除,比如删除str字符串中的所有英文字母var result6 str.replace(/[a-z]/gi,);console.log(result6);切割字符串
使用 split() 方法来根据正则表达式将字符串切割成数组。例如let arr str.split(regex); var str1a2b3c4d5e6f7UZHCUIAE;//split()可以将一个字符串拆分为一个数组var resultstr.split(/[a-z]/gi);//依靠正则语法的类似格式来给split()拆分字符设置关键字符或者关键字符范围//这个方法即使不设定全局匹配模式也会全部拆分console.log(result);修饰符
正则表达式可以使用修饰符来改变匹配的行为如 i忽略大小写、g全局匹配和 m多行匹配等。例如let regex /pattern/gi;
元字符和字符类
正则表达式中的元字符和字符类用于匹配特定的字符或字符集合如 .匹配任意字符、\d匹配数字字符和 [abc]匹配字符 a、b 或 c等。例如let regex /\d/;
量词
正则表达式中的量词用于指定匹配的次数如 *零次或多次、一次或多次和 ?零次或一次等。例如let regex /\d{2,4}/; //创建一个正则表达式检查一个字符串里面是否含有aaavar reg/aaa/;console.log(reg.test(aaabbc));//重复写有些繁琐就可以通过量词设置一个内容出现的次数//{n}表示重复n次//{m,n}表示重复m-n次//{m,}表示重复m次以上var reg2/a{3}/i;//除了设置量词之外还可以额外设置匹配模式比如全局匹配或者是否忽略大小写console.log(reg2.test(aaAbbc));//量词只他前边的一个内容起作用//例如 bc{3}指的是bccc而不是bcbcbcvar reg3/bc{3}/;console.log(reg3.test(bcbcbc));//控制台显示错误因为检查的字符串是bcccconsole.log(reg3.test(bccc));//控制台显示正确因为检查的字符串是bccc//可以用()来锁定量词的内容var reg4/(bc){3}/;console.log(reg4.test(bcbcbc));//控制台显示正确因为检查的字符串是bcbcbc//量词衍生使用var reg5/ab{1,4}c/;//这样表示b的数量是1-4个所以abc abbc abbbc abbbbc这四个都可以console.log(reg5.test(abc));console.log(reg5.test(abbc));console.log(reg5.test(abbbc));console.log(reg5.test(abbbbc));var reg6/ab{4,}c/;//表示中间的b的数量是四个或者四个以上console.log(reg6.test(abbc));//控制台输出错误console.log(reg6.test(abbbc));//控制台输出错误console.log(reg6.test(abbbbc));//控制台输出正确console.log(reg6.test(abbbbbbbc));//控制台输出正确//n 匹配任何包含至少一个n的字符串//n 相当于n{1,}即数量大于等于一的n的字符串var reg7/abc/;console.log(reg5.test(ac));//控制台输出错误因为没有bconsole.log(reg7.test(abc));//控制台输出正确因为有bconsole.log(reg7.test(abbc));//控制台输出正确因为有bbconsole.log(reg7.test(abbbc));//控制台输出正确因为有bbb//至少包含一个ab就能够输出正确多个ab不影响输出结果//n* 相当于n{0,}即数量大于等于领的n的字符串var reg8/ab*c/;console.log(reg8.test(ac));//控制台输出正确因为没有b也可以console.log(reg8.test(abc));//控制台输出正确因为有bconsole.log(reg8.test(abbc));//控制台输出正确因为有bbconsole.log(reg8.test(abbbc));//控制台输出正确因为有bbb//n? 0个或者1个相当于{0,1}即数量是0-1个var reg9/ab?c/;console.log(reg9.test(ac));//控制台输出正确因为没有b也可以console.log(reg9.test(abc));//控制台输出正确因为有一个bconsole.log(reg9.test(abbc));//控制台输出错误因为有连个bconsole.log(reg9.test(abbbc));//控制台输出错误因为三个b//检查一个字符串是否以a开头// ^表示开头//比如 /^a/var reg10/^a/;var reg11/c$/;console.log(reg10.test(ab));//控制台输出正确因为开头是aconsole.log(reg10.test(bc));//控制台输出错误因为开头不是aconsole.log(reg10.test(abc));//控制台输出正确因为开头是aconsole.log(reg10.test(bcd));//控制台输出错误因为开头不是aconsole.log(reg11.test(ab));//控制台输出错误因为结尾是bconsole.log(reg11.test(bc));//控制台输出正确因为结尾是cconsole.log(reg11.test(abc));//控制台输出正确因为结尾是cconsole.log(reg11.test(bcd));//控制台输出错误因为结尾是d//如果同时使用开头和结尾var reg12/^a$/;console.log(reg12.test(aa));//控制台输出错误因为开头的a和结尾的a不是同一个console.log(reg12.test(a));//控制要输出正确因为检索的a即是开头也是结尾//如果使用或语句var reg13/^a|a$/;console.log(reg13.test(a));//控制台输出正确因为开头或者结尾是aconsole.log(reg13.test(aa));//控制台输出正确因为开头或者结尾是a//创建一个正则表达式用来检查一个字符串是否是手机号//手机号的规则//1.以1开头//2.第二位数字是3-9//3.三位以后包括三位的数字可以使0-9任意一个var mobilephoneStr15697955165;var mobilephoneStr218365445708;var reg14/^1[3-9][0-9]{9}$/;console.log(reg14.test(mobilephoneStr));//控制台输出为true符合条件console.log(reg14.test(mobilephoneStr2));//控制台输出为true符合条件console.log(reg14.test(11011011011));//控制台输出为fals不符合手机号的规则//检查一个字符串中是否含有.//.表示任意字符var reg/./;console.log(reg.test(ahduads));//.表示任意字符所以不管内容是什么控制台输出都是true//在正则表达式中用\作为转义字符//\.来表示.//同理 \\表示\var reg2/\./;console.log(reg2.test(agbuidashduia));//字符串中没有.所以控制台输出falseconsole.log(reg2.test(asdasd.asdasd));//字符串中有.所以控制台输出truevar reg3/\\/;console.log(reg3.test(b\\));//要在字符串中输入\,必须输入\\//使用构造函数时由于他的参数是一个字符串而\是字符串中转义字符//如果要使用\则需要使用\\来代替var reg4 new RegExp(\\.);//这样的字符串表示检索是否有.console.log(reg4.test(asd));//字符串中没有.所以输出falseconsole.log(reg4.test(ad.asd));//字符串中有.所以输出true// \w 任意字母、数字以及下划线_ [A-z0-9_]var reg4/\w/;console.log(reg4.test(abc));console.log(reg4.test(ABC));console.log(reg4.test(123));console.log(reg4.test(___));//以上输出都是ture可以使大写字母也可以是小写字母还可以是数字和下划线_// \W 跟\w相反除了字母、数字以及下划线_ [^A-z0-9_] 这里的^表示除了var reg5/\W/;console.log(reg5.test(!#$%^^***%));console.log(reg5.test(abc));console.log(reg5.test(ABC));console.log(reg5.test(123));console.log(reg5.test(___));//第一个输出true后面几个全部输出false。除了字母、数字以及下划线_其余的都输出true// \d 表示任意数字 [0-9]// \D 表示除了数字 [^0-9]// \s 表示空格 // \S 表示除了空格// \b 表示边界 \B 表示除了单词边界var reg6/\bchild\b/;console.log(reg6.test(hell child));//控制台输出trueconsole.log(reg6.test(hello children));//控制台输出false// \bchild\b 表示搜索child这个单词并且要存在边界案例匹配电子邮件 //电子邮件//格式根据网站要求定制//例如 任意字母数字下划线(三个起步).任意字母数字下划线任意字母数字.任意字母(2-5).任意字母(2-5)// \w{3,} (\.\w)* [A-z0-9] (\.[A-z]{2,5}){1,2}// 表示一次或者一次以上*表示可有可无var emailReg/\w{3,}(\.\w)*[A-z0-9](\.[A-z]{2,5}){1,2}/;console.log(emailReg.test(2299999995qq.com));console.log(emailReg.test(xahsad.whahhs123.com));
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/912493.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!