1. 云栖社区>
  2. 技术文集>
  3. 列表>
  4. 正文

js正则表达式常用函数方法及简单应用

作者:用户 来源:互联网 时间:2016-11-07 20:30:09

正则表达式字符串logrestrconsolere正则表达式正则(JS)re=newlastMatchconsole.logJS常用正则表达式console.log()

js正则表达式常用函数方法及简单应用 - 摘要: 本文讲的是js正则表达式常用函数方法及简单应用,  前言   关于正则表达式,是前端学习的重点和难点。我在之前的一片文章重新拎一遍js的正则表达式中,重新带领大家温故了一下正则表达式。本文主要带领大家一起

 前言

  关于正则表达式,是前端学习的重点和难点。我在之前的一片文章重新拎一遍js的正则表达式中,重新带领大家温故了一下正则表达式。本文主要带领大家一起应用一些正则表达式,简单介绍一些正则表达式中常用的方法及对象,例如:test、exec、match、replace、search等等。
正则表达式对象的方法   1、test,返回一个 Boolean 值,它指出在被查找的字符串中是否存在模式。如果存在则返回 true,否则就返回 false。 2、exec,用正则表达式模式在字符串中运行查找,并返回包含该查找结果的一个数组。 3、compile,把正则表达式编译为内部格式,从而执行得更快。   正则表达式对象的属性   1、source,返回正则表达式模式的文本的复本。只读。 2、lastIndex,返回字符位置,它是被查找字符串中下一次成功匹配的开始位置。 3、input ($_),返回执行规范表述查找的字符串。只读。 4、lastMatch ($&),返回任何正则表达式搜索过程中的最后匹配的字符。只读。 5、lastParen ($+),如果有的话,返回任何正则表达式查找过程中最后括的子匹配。只读。 6、leftContext ($`),返回被查找的字符串中从字符串开始位置到最后匹配之前的位置之间的字符。只读。 7、rightContext ($'),返回被搜索的字符串中从最后一个匹配位置开始到字符串结尾之间的字符。只读。   String对象一些和正则表达式相关的方法   1、match,找到一个或多个正则表达式的匹配。 2、replace,替换与正则表达式匹配的子串。 3、search,检索与正则表达式相匹配的值。 4、split,把字符串分割为字符串数组。   案例1 test方法测试   //test方法,测试字符串,符合模式时返回true,否则返回false   var re = /he/;//最简单的正则表达式,将匹配he这个单词   var str = "he";  console.log(re.test(str));//true   str = "we";   console.log(re.test(str));//false   str = "HE";   console.log(re.test(str));//false,大写,如果要大小写都匹配可以指定i标志(i是ignoreCase或case-insensitive的表示)   re = /he/i;   console.log(re.test(str));//true   str = "Certainly!He loves her!";   console.log(re.test(str));//true,只要包含he(HE)就符合,如果要只是he或HE,不能有其它字符,则可使用^和$   re = /^he/i;//脱字符(^)代表字符开始位置   console.log(re.test(str));//false,因为he不在str最开始   str = "He is a good boy!";   console.log(re.test(str));//true,He是字符开始位置,还需要使用$   re = /^he$/i;//$表示字符结束位置   console.log(re.test(str));//false   str = "He";   console.log(re.test(str));//true   //当然,这样不能发现正则表达式有多强大,因为我们完全可以在上面的例子中使用==或indexOf   re = /\s/;// \s匹配任何空白字符,包括空格、制表符、换页符等等   str= "user Name";//用户名包含空格   console.log(re.test(str));//true   str = "user     Name";//用户名包含制表符   console.log(re.test(str));//true   re=/^[a-z]/i;//[]匹配指定范围内的任意字符,这里将匹配英文字母,不区分大小写   str="variableName";//变量名必须以字母开头   console.log(re.test(str));//true   str="123abc";   console.log(re.test(str));//false     案例2 exec测试   var haoVersion = "Haorooms 8";//其中的8表示系统主版本号   var re = /^[a-z]+\s+\d+$/i; //+号表示字符至少要出现1次,\s表示空白字符,\d表示一个数字   console.log(re.test(haoVersion));//true,但我们想知道主版本号   //另一个方法exec,返回一个数组,数组的第一个元素为完整的匹配内容   re=/^[a-z]+\s+\d+$/i;   arr = re.exec(haoVersion);   console.log(arr[0]);//将haoVersion完整输出,因为整个字符串刚好匹配re   //我只需要取出数字   re=/\d+/;   var arr = re.exec(haoVersion);   console.log(arr[0]);//8     //exec返回的数组第1到n元素中包含的是匹配中出现的任意一个子匹配   re=/^[a-z]+\s+(\d+)$/i;//用()来创建子匹配   arr =re.exec(haoVersion);   console.log(arr[0]);//整个haoVersion,也就是正则表达式的完整匹配   console.log(arr[1]);//8,第一个子匹配,事实也可以这样取出主版本号   console.log(arr.length);//2   haoVersion = "Haorooms 8.10";//取出主版本号和次版本号   re = /^[a-z]+\s+(\d+)\.(\d+)$/i;//.是正则表达式元字符之一,若要用它的字面意义须转义   arr = re.exec(haoVersion);   console.log(arr[0]);//完整的haoVersion   console.log(arr[1]);//8   console.log(arr[2]);//10
案例3 String对象的一些和正则表达式有关的方法   1、关于replace,我之前的一片博客专门写了。还可以传参数。具体请看:http://www.haorooms.com/post/js_replace_bl   2、其他操作   //replace方法,用于替换字符串   var str ="some money";   console.log(str.replace("some","much"));//much money   //replace的第一个参数可以为正则表达式   var re = /\s/;//空白字符   console.log(str.replace(re,"%"));//some%money   //在不知道字符串中有多少空白字符时,正则表达式极为方便   str ="some some             \tsome\t\f";   re = /\s+/;   console.log(str.replace(re,"#"));//但这样只会将第一次出现的一堆空白字符替换掉   //因为一个正则表达式只能进行一次匹配,\s+匹配了第一个空格后就退出了   re = /\s+/g;//g,全局标志,将使正则表达式匹配整个字符串   console.log(str.replace(re,"@"));//some@some@some@   //另一个与之相似的是split   var str = "a-bd-c";   var arr = str.split("-");//返回["a","bd","c"]   //如果str是用户输入的,他可能输入a-bd-c也可能输入a bd c或a_bd_c,但不会是abdc(这样就说他输错了)   str = "a_db-c";//用户以他喜欢的方式加分隔符s   re=/[^a-z]/i;//前面我们说^表示字符开始,但在[]里它表示一个负字符集   //匹配任何不在指定范围内的任意字符,这里将匹配除字母处的所有字符   arr = str.split(re);//仍返回["a","bd","c"];   //在字符串中查找时我们常用indexOf,与之对应用于正则查找的方法是search   str = "My age is 18.Golden age!";//年龄不是一定的,我们用indexOf不能查找它的位置   re = /\d+/;   console.log(str.search(re));//返回查找到的字符串开始下标10   //注意,因为查找本身就是出现第一次就立即返回,所以无需在search时使用g标志   //下面的代码虽然不出错,但g标志是多余的   re=/\d+/g;   console.log(str.search(re));//仍然是10    var str = "My name is CJ.Hello everyone!";   var re = /[A-Z]/;//匹配所有大写字母   var arr = str.match(re);//返回数组   console.log(arr);//数组中只会包含一个M,因为我们没有使用全局匹配   re = /[A-Z]/g;   arr = str.match(re);   console.log(arr);//M,C,J,H   //从字符串中抽取单词   re = /\b[a-z]*\b/gi;//\b表示单词边界   str = "one two three four";   console.log(str.match(re));//one,two,three,four    案例4 RegExp对象实例的一些属性   var re = /[a-z]/i;   console.log(re.source);//将[a-z]字符串输出   //请注意,直接console.log(re)会将正则表达式连同前向斜线与标志输出,这是re.toString方法定义的     var re = /[A-Z]/;   //exec方法执行后,修改了re的lastIndex属性,   var str = "Hello,World!!!";   var arr = re.exec(str);   console.log(re.lastIndex);//0,因为没有设置全局标志   re = /[A-Z]/g;   arr = re.exec(str);   console.log(re.lastIndex);//1   arr = re.exec(str);   console.log(re.lastIndex);//7     var re = /[A-Z]/;   var str = "Hello,World!!!";   re.lastIndex = 120;   var arr = re.exec(str);   console.log(re.lastIndex);//0    案例5 RegExp对象的静态属性   //input 最后用于匹配的字符串(传递给test,exec方法的字符串)   var re = /[A-Z]/;   var str = "Hello,World!!!";   var arr = re.exec(str);   console.log(RegExp.input);//Hello,World!!!   re.exec("tempstr");   console.log(RegExp.input);//仍然是Hello,World!!!,因为tempstr不匹配   //lastMatch 最后匹配的字符   re = /[a-z]/g;   str = "hi";   re.test(str);   console.log(RegExp.lastMatch);//h   re.test(str);   console.log(RegExp["$&"]);//i  ,$&是lastMatch的短名字,但由于它不是合法变量名,所以要。。   //lastParen 最后匹配的分组   re = /[a-z](\d+)/gi;   str = "Class1 Class2 Class3";   re.test(str);   console.log(RegExp.lastParen);//1   re.test(str);   console.log(RegExp["$+"]);//2   //leftContext  返回被查找的字符串中从字符串开始位置到最后匹配之前的位置之间的字符   //rigthContext 返回被搜索的字符串中从最后一个匹配位置开始到字符串结尾之间的字符   re = /[A-Z]/g;   str = "123ABC456";   re.test(str);   console.log(RegExp.leftContext);//123   console.log(RegExp.rightContext);//BC456   re.test(str);   console.log(RegExp["$`"]);//123A   console.log(RegExp["$'"]);//C456     案例6 使用RegExp构造函数注意点   var str = "\?";   console.log(str);//只会输出?   var re = /\?/;//将匹配?   console.log(re.test(str));//true   re = new RegExp("\?");//出错,因为字符串里面\是转义字符\?相当于?要得到\?,就要\\?  re = new RegExp("\\?");//正确,将匹配?   console.log(re.test(str));//true     在正则表达式中使用特殊字符   //ASCII方式用十六进制数来表示特殊字符   var re = /^\x43\x4A$/;//将匹配CJ   console.log(re.test("CJ"));//true   //也可使用八进制方式   re = /^\103\112$/;//将匹配CJ   console.log(re.test("CJ"));//true   //还可以使用Unicode编码   re =/^\u0043\u004A$/;//使用 Unicode,必须使用u开头,接着是字符编码的四位16进制表现形式   console.log(re.test("CJ")); 

以上是云栖社区小编为您精心准备的的内容,在云栖社区的博客、问答、公众号、人物、课程等栏目也有 的相关内容,欢迎继续使用右上角搜索按钮进行搜索正则表达式 , 字符串 , log , re , str , console , re正则表达式 , 正则(JS)re=new , lastMatch , console.log , JS常用正则表达式 console.log() 一次函数的简单应用、三角函数的简单应用、一次函数简单应用题、常用正则表达式、常用正则表达式大全,以便于您获取更多的相关知识。

java-网页上的城市切换功能怎么实现

...京东的城市切换功能 解决方案三: 这个最简单和常用的方式就是在网上搜索:js城市选择控件、js城市插件、JS城市三级联动等,找一个JS插件直接用。 如果需要手写的话就用JS或这Jquery写一个联动函数,将省、市、县三...

很全面的JavaScript常用功能汇总集合_javascript技巧

...型:Object, Array, Function, Date 及RegExp。数组,函数,日期和正则表达式是特殊类型,但是严格来讲,日期和正则表达式是元数据类型,可封装在其他对象中。 JS 中变量类型,数组元素类型,函数参数以及返回值的类型不需要声明...

最新韩顺平PHP视频教程下载(包含svn版本控制,Yii Framework)

...final const9-9 6.面向对象编程综合练习10-10 1 课程回顾10-10 2 正则表达式10-10 3 正则表达式 子表达式 引用 反向捕获10-10 4 正则表达式 元字符 语法10-10 5 元字符 实例应用10-10 6 供求信息网讲解110-10 7 供求信息网讲解210-11 1 供求信息网3...

总结前端面试过程中最容易出现的问题

... 五、js数组去重和排序 具体我就不详细描述了。 六、js正则表达式 关于正则:http://www.haorooms.com/post/js_regex_refuse,这篇文章应对面试足够了。 让你写个简单的正则,去掉字符串左右空格。具体看看我之前的文章http://www.haoroom...

js正则及常用方法函数总结

正则表达式作为一种匹配处理字符串的利器在很多语言中都得到了广泛实现和应用,web开发本质上是处理字符串(服务端接受请求处理后拼接字符串作为响应,这在早期的CGI编程中最明显,然后客户端解析字符串进行渲染和执行...

前三篇
后三篇