js中这个js中正则表达式的使用是什么意思?

js正则表达式的使用详解
字体:[ ] 类型:转载 时间:
本篇文章是对js中正则表达式的使用进行了详细的分析介绍,需要的朋友可以参考下
js中的正则表达式比起C#中的正则表达式要弱很多,但基本够用了1定义正则表达式2关于验证的三个这则表达式方法3正则表达式式的转义字符1定义正则表达式在js中定义正则表达式很简单,有两种方式,一种是通过构造函数,一种是通过//,也就是两个斜杠。例如 代码如下:& var&& re =new RegExp("\\?(\\w{1,}=\\w{1,}&){1,}\\w{1,}=\\w{1,}");使用构造函数定义正则表达式,注意大小写,负责就会不起作用。由于构造函数的参数是一个字符串,也可以是两个斜杠的方式定义,遇到一些特殊字符就需要使用\进行转义通过双斜杠的方式定义同样的正则表达式 代码如下:var&& re =/\?(\w{1,}=\w{1,}&){1,}\w{1,}=\w{1,}/; 代码如下:var re =new RegExp( /^\?(\w{1,}=\w{1,}&){1,}\w{1,}=\w{1,}/);可以和构造函数达到同样的效果,但仔细分析,发现,通过构造函数需要更多的转义字符\2关于验证的三个正则表达式方法使用正则表达式的主要有字符串的方法match,正则表达式的方法exec,test正则表达式方法test测试给定的字符串是否满足正则表达式,返回值是bool类型的,只有真和假,如果只是单纯的判断,不需要其他的处理,可以使用尤其是验证时。 代码如下:&function test(){&&&& var text="index.aspx?test=1&ww=2&www=3";&//&&& &&&&& var&& re =/\?(\w{1,}=\w{1,}&){1,}\w{1,}=\w{1,}/;&&& //& var&& re =new RegExp("\\?(\\w{1,}=\\w{1,}&){1,}\\w{1,}=\\w{1,}");&&&&&&& var result=& re.test(text);&&&& if(result)&&&& {&&&&&&& alert("ok");&& &&&& }else&&&& {&&&&& alert("err");& &&&& }&&&&&&&&&&& &&&& &&&&& }正则表达式方法exec测试给定的字符串是否满足正则表达式,返回匹配到的字符串,如果没有匹配的则返回null,和test基本一致,如果需要获取匹配的各个子字符串,可以使用下标的方式,把上边的test的例子可以改写如下 代码如下:&function test(){&&& var text="index.aspx?test=1&ww=2&www=3";&&&&&&&&&&& var&& re = /\?(\w{1,}=\w{1,}&){1,}\w{1,}=\w{1,}/;&& //& var&& re =new RegExp( "\\?(\\w{1,}=\\w{1,}&){1,}\\w{1,}=\\w{1,}");&&&&&&& var result=& re.exec(text);&&&&&& if(result)&&&& {&&&&&&&&&& alert("ok");&&&&&&&&&&&&&&&&&&&&&&&&&& alert(result);& // 是?test=1&ww=2&www=3,ww=2&&&&& &&&&&&&&&&& alert(result[0]+",0");//是?test=1&ww=2&www=3&&&& alert(result[1]+",1");//是ww=2&&&&& &&&& }else&&&& {&&&&& alert("err");& &&&& }&& &&&&& }match其实是字符串的方法,但参数确是一个正则表达式,把上边的例子改写后,如下 代码如下:&function test(){&&&& var text="index.aspx?test=1&ww=234";&//&&&&&&&&& var&& re = /\?(\w{1,}=\w{1,}&){1,}\w{1,}=\w{1,}/;&&&& //&& var&& re2 = "(\\w{1,}=\\w{1,}&){1,}\\w{1,}=\\w{1,}"&&&& var result= text.match(re);&&&&&& if(result)&&&&&&&& {&&&&&&&&&&&&&&&&&&&&&&&&&& alert(result);//?test=1&ww=234,test=1&&& &&&& &&&&&&&&&&&&& alert(result[0]+",0");//?test=1&ww=234&&&&&&& alert(result[1]+",1");//test=1&&&&}else&&&&&&&&& {&&&&&&&&& alert("err");& &&&&&&&& }& &&&&& }其实字符串类还有多个函数可以传递正则表达式,split,search,replace等但这些方法已经不适合验证了。 代码如下:&function test(){&&&& var text="index.aspx?test=1&ww=234";&//&&&&&&&&& var&& re = /\?(\w{1,}=\w{1,}&){1,}\w{1,}=\w{1,}/;&&&& //&& var&& re2 = "(\\w{1,}=\\w{1,}&){1,}\\w{1,}=\\w{1,}"&&&& var result= text.split(re);&&&& &&&&&&&&&&&&&&&&& alert(result);&& &&&& &&&&&&&&&& alert(result[0]+",0");&&&&&&& alert(result[1]+",1");&&&&&&&&& }3正则表达式式的转义字符在正则表达式中会经常出现转义字符,例如问号?在正则表达式中有特殊的含义,如果需要匹配问号?就需要转义,使用转义字符反斜杠\如下两个都是匹配问号开头的一段字符串 代码如下:&function test(){&&& var text="?test=1&ww=2&www=3";&&&&&&&&&& var&& re = /^\?(\w{1,}=\w{1,}&){1,}\w{1,}=\w{1,}/;//& \?表示配置问号?&& //& var&& re =new RegExp( "^\\?(\\w{1,}=\\w{1,}&){1,}\\w{1,}=\\w{1,}");//& \\?表示配置问号?&&&&&&& var result=& re.exec(text);&&&&&& if(result)&&&& {&&&&&&&&&& alert("ok");&&&&&&&&&&&&&&&&& alert(result);&& &&&& &&&&&&&&&& alert(result[0]+",0");&&&&&&& alert(result[1]+",1");&&&& &&&& }else&&&& {&&&&& alert("err");& &&&& }&& &&&&& }
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具js正则表达式:/\&/g
这个是什么意思啊 - ITeye问答
今天看了一个正则,正则接触不多,我看了一下正则的知识,也没看明白/\&/g& 这个正则表达的是什么意思。
匹配开头为&的字符串。g为修饰符,全局匹配,另外还i和m,前者为忽略大小写,后者为多行搜索
还是给一个http://www.jb51.net/tools/zhengze.html (正则表达式30分钟入门教程) 当初我就是由这个来学习的,希望能帮助到你,里面还有很多有用的知识关于正则的
/\&/g
可以拆分成 /../g,和\&,后者是&的转义符
已解决问题
未解决问题在 SegmentFault,解决技术问题
每个月,我们帮助 1000 万的开发者解决各种各样的技术问题。并助力他们在技术能力、职业生涯、影响力上获得提升。
一线的工程师、著名开源项目的作者们,都在这里:
获取验证码
已有账号?
问题对人有帮助,内容完整,我也想知道答案
问题没有实际价值,缺少关键内容,没有改进余地
如题,本人新手一枚,在看《JavaScript高级程序设计》第五章引用类型5.6.3小节String类型时,看到如下例子:
var colorText = "red,blue,green,yellow";
var colors1 = colorText.split(",");
var colors2 = colorText.split(",",2);
var colors3 = colorText.split(/[ ^\,]+/);对于/[ ^\,]+/在这里的作用我是知道的,但是书本没有解释为什么用这个,并且斜杠里面的符号是什么意思。希望大神们能帮忙解答下,感谢~
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
两个/之间的字符串表示一个正则表达式。[^\,]表示任何非,(逗号)的字符,+表示一个或者多个。
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
^这个符号在正则表达式中,表示以..开头或者非/[^]/这种情况表示非/^/这种情况表示以...开头
同步到新浪微博
分享到微博?
关闭理由:
删除理由:
忽略理由:
推广(招聘、广告、SEO 等)方面的内容
与已有问题重复(请编辑该提问指向已有相同问题)
答非所问,不符合答题要求
宜作评论而非答案
带有人身攻击、辱骂、仇恨等违反条款的内容
无法获得确切结果的问题
非开发直接相关的问题
非技术提问的讨论型问题
其他原因(请补充说明)
我要该,理由是:JavaScript中的正则表达式
JavaScript中的正则表达式
Javascript的正则表达式是前端中比较重要的部分,正则表达式主要用于字符串处理,表单验证等场合,实用高效,文章主要对JavaScript中的正则的学习与总结正则表达式的定义正则表达式:是一个描述字符模式的对象,JavaScrip中正则表达式用RegExp对象表示,可以使用RegExp构造函数来创建正则对象正则表达式的创建1.字面量创建var reg = /[a-z]/;2.构造函数的创建var reg = new RegExp('[a-z]');直接量字符字符描述字母和数字字母数字的本身\o空字符\t制表符\n换行符\v垂直制表符\f换页符\r回车符\cX控制字符字符类将直接量字符放入方括号内就组成了字符类console.log(/[abc]/.test(&a&));//trueconsole.log(/[abc]/.test(&b&));//trueconsole.log(/[abc]/.test(&c&));//true否定类字符定义否定类字符时,将一个“^”符号作为方括号内的第一个字符console.log(/[^abc]/.test(&a&));//falseconsole.log(/[^abc]/.test(&b&));//falseconsole.log(/[^abc]/.test(&1111&));//true范围字符利用 &-& 表示范围字符,可以匹配某个范围内的字符console.log(/[0-9]/.test(&5&));//trueconsole.log(/[0-9]/.test(&a&));//falseconsole.log(/[a-z]/.test(&b&));//trueconsole.log(/[a-z]/.test(&B&));//falseconsole.log(/[A-Z]/.test(&B&));//trueconsole.log(/[A-Z]/.test(&b&));//false预定义的字符类等同于[...]放括号内的任意字符[^...]不在方括号内的任意字符.[^\n\r]除换行符与结束符之外的任意字符\w[a-zA-Z0-9]单词字符(所有的字母)\W[^a-zA-Z0-9]非单词字符\s空白字符\S非空白字符\d[0-9]数字字符\D[^0-9]非数字字符[\b]退格符量词在我们上面认识到的正则语法当中,我们可以把两位字母描述为/\w\w/,三位字母描述为/\w\w\w/,但如果要描述很多位字母怎么办?描述为/\w....../天呐! 这是要逼死我们的节奏啊因此量词就是处理这些数量关系操作的它用来修饰前一位字符出现的次数{n,m}至少出现n次但不超过m次{n,}至少出现n次或更多次{n}出现n次?出现0次或者1次,等价于{0,1}+出现1次或者多次,等价于{1, }*出现0次或者多次,等价于{0,1}console.log(/\d{2,4}/.test('111'));//trueconsole.log(/\w{3}\d?/.test('aaa'));//trueconsole.log(/\w{3}\d?/.test('aaa1'));//true注意:在使用 & * & 和 & ? & 时 由于这些字符有可能匹配0个字符,因此他们允许什么都不匹配,例如,正则表达式 /a*/与&bbbb&匹配,因为它含有0个a贪婪量词我们上面列出的量词都是贪婪量词,它会尽可能多地匹配,默认先匹配整个字符串,然后不匹配在缩小范围继续匹配非贪婪量词在上面列出的量词后面加个问号(& ?? & & +? &)总是从第一个字符开始向后扩展范围匹配//非贪婪模式console.log(/a*?bb/g.exec(&abbaabbaaabbb&)); //abb//贪婪模式var pattern = /a*bb/g;var text = 'aabbaabbaaabbbaabbb';while((result = pattern.exec(text))!=null){ console.log(result); //aabb aabb aaabb aabb}选择,分组与引用选择字符 & | & 用于分隔供选择的字符console.log(/ab|cd|ef/.test('ab'));//trueconsole.log(/ab|cd|ef/.test('cd'));//trueconsole.log(/ab|cd|ef/.test('ef'));//true分组&()& 用于分组,把单独的项组合成子表达式console.log(/java(script)?/.test('java'));//trueconsole.log(/java(script)?/.test('javascript'));//true引用引用包含 匹配模式引用,匹配的内容引用& \ &后面加数字 用于模式的引用& $ & 后面加数据 用于匹配的内容引用console.log(/(\d)([a-z])\1/.test('1a1'));//trueconsole.log(RegExp.$1);//1console.log(RegExp.$2);//a只组合并不创建引用并不是所有的分组都能创建引用,& (?: ) &符号只用来分组而不创建引用,如下: \1 不是 引用的 \d 而是 [a-z]console.log(/(?:\d)([a-z])\1/.test('1aa'));//trueconsole.log(/(?:\d)([a-z])\1/.test('1a1'));//false位置字符^字符串的开头(要单独存在不能放在[ 的后面)$字符串的结尾\b单词边界([a-zA-Z_0-9]之外的字符) 注意[\b]为退格符\B非单词边界(?=n)零宽正向断言 匹配后面为n 的字符(?!n)零宽负向断言 匹配后面不能有n 的字符console.log(/^java$/.test('java'));//trueconsole.log(/^java$/.test('javascript'));//falseconsole.log(/^java$/.test('cjavascript'));//falseconsole.log(/java(?=script)/.test('javascript'));//trueconsole.log(/java(?=script)/.test('javaislan'));//falseconsole.log(/java(?!script)/.test('javascript'));//falseconsole.log(/java(?!script)/.test('javaislan'));//true修饰符正则表达式的修饰符是放在 &/& 之外的,JavaScript 支持三个修饰符i执行不区分大小写g执行全局匹配(查找所有匹配而不是在匹配到第一个就停止)m执行多行匹配console.log(/JAVA/i.test('java'));//true支持正则的String对象方法search():用于检索字符串中指定的子字符串,或检索与正则表达式相匹配的子字符串,并返回第一个与之匹配的子字符串的位置console.log('JAVA is not javascript'.search(/java/i));//0注意:search()方法不支持全局检索,因为他会忽略正则表达式参数中的修饰符greplace():用于检索与替换操作,接收两个参数,第一个是正则表达式,第二个是要进行替换的字符串,该方法可以全局匹配console.log('JAVA is not JAVAscript'.replace(/java/i, 'java'));//java is not JAVAscriptconsole.log('JAVA is not JAVAscript'.replace(/java/ig, 'java'));//java is not javascript回忆上面我们所提到的正则的引用 $加数字可以保存分组的匹配的内容,这里我们就可以用到console.log('JAVA is not javascript'.replace(/(JAVA)/, '&$1&'));//&JAVA& is not javascripmatch():用于检索字符串中与正则表达式匹配的结果,参数必须是正则表达式,返回一个由匹配结果组成的数组在match方法中如果正则表达式设置修饰符g,则返回的数组是字符串中所有匹配的结果console.log('JAVA is not JAVAscript'.match(/java/ig));//['JAVA', 'JAVA']如果没有设置g,match()方法不会进行全局检索,只会检索第一个匹配,但它也是返回一个数组,此时数组的第一个元素就是匹配的结果,剩下的元素为圆括号包含的子表达式匹配的结果console.log('1a2b'.match(/(\d)([a-z])/)); //['1a', '1', 'a']split():用于把一个字符串分割成数组,参数为字符串或这个正则表达式console.log('a,b,c,d'.split(','));//[&a&, &b&, &c&, &d&]console.log('a, b, c, d'.split(/,\s*/));//[&a&, &b&, &c&, &d&]JavaScript中的 RegExp 对象RegExp() 构造函数用于创建新的RegExp 对象。构造函数接受两个参数,第一个是表达式的主体部分,第二个是表达式的修饰符//在构造函数中必须用 \ 字符作为前缀进行转义var regExp = new RegExp('\\w*', 'g');RegExp 对象的属性RegExp 对象包含5个属性属性global只读的布尔值,用于说明表达式是否带有修饰符gignoreCase只读的布尔值,用于说明表达式是否带有修饰符ilastIndex是一个读/写的整数,默认值为0,如果表达式带修饰符g,lastIndex的值会被设置为下次检索的开始位置(只有exec()和test()方法才会用到)multiLine只读的布尔值,用于说明表达式是否带有修饰符msource只读的字符串,包含表达式的文本RegExp对象的方法exec():用于检索字符串中正则表达式的匹配,如果有匹配则返回该匹配的值,否则返回nullconsole.log(/java/i.exec('javaScript is not java'));//[&java&, index: 0, input: &javaScript is not java&]console.log(/css/i.exec('javaScript is not java'));//nullconsole.log(/java/ig.exec('javaScript is not java'));//[&java&, index: 0, input: &javaScript is not java&]上述代码可以看出exec() 只会返回一次匹配结果,在全局匹配模式下,exec方法会设置lastIndex 属性的值,exec()的下次检索会从lastIndex属性指示的字符处开始检索var pattern = /java/var text = 'javaScript is not JAVA';result = pattern.exec(text);console.log(result);//[&java&, index: 0, input: &javaScript is not java&]console.log(pattern.lastIndex);//4result = pattern.exec(text);console.log(result);//[&JAVA&, index: 18, input: &javaScript is not JAVA&]console.log(pattern.lastIndex);//22通常我们在用exec()检索字符串时,可以利用while循环var pattern = /java/var text = 'javaScript is not JAVA';while((result = pattern.exec(text))!==null){ console.log(result);}test():用于检索字符串中是否匹配某个表达式,如果匹配返回true,否则返回falseconsole.log(/java/.test('javascript'));//trueconsole.log(/java/.test('script'));//true
本文仅代表作者观点,不代表百度立场。系作者授权百家号发表,未经许可不得转载。
百家号 最近更新:
简介: 发布最前沿科技技术及好玩的手工制作
作者最新文章}

我要回帖

更多关于 js 中英文正则表达式 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信