JavaScript正则表达式的学习

正则表达式的应用已经相当广泛,之前也多次接触,但是并未真正的系统的学习过,借此机会,好好整理了一下,并加入了es6中关于正则表达式的新语法,希望对大家有点帮助.

一、首先,了解正则表达式的含义,表示方法

  正则表达式又称规则表达式,(Regular Expression,在代码中常简写为regex、regexp或RE),对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。正则表通常被用来检索、替换那些符合某个模式(规则)的文本。

  正则表达式的表示方法有两种。

  a.直接量表示.

  /pattern/attributes;  //  /正则表达式主体/修饰符(可选)

  b.RegExp对象表示。在 JavaScript 中,RegExp 对象是一个预定义了属性和方法的正则表达式对象。

  new RegExp(pattern,attributes);   //   创建RegExp对象(正则表达式主体,修饰符(可选))

  表达式主体。表达式主体(pattern)是一个字符串,指定了正则表达式的模式。

  修饰符。 修饰符(attributes)是一个可选的参数,包含属性 g(全局匹配)、i(不区分大小写匹配)、m(多行匹配),es6中又加入了y(粘连sticky)修饰符,y修饰符跟g类似,也是全局匹配,后一次匹配都从上一次匹配成功的下一个位置开始,不同在于g修饰符只要剩余位置中存在匹配就行,但是y修饰符必须从剩余的第一个位置开始。

二、正则表达式中的字符。

  1.普通字符。

  字母,数字,汉字,下划线及一些没有特殊定义的标点符号登大多数字符都属于普通字符,正则中的普通字符,在匹配字符串的时候,匹配与之相同的字符即可~ 比如如下代码:

var str = "abcde";

console.log(str.match(/a/)); // ["a", index: 0, input: "abcde"]

  如上代码,字符串abcde匹配a的时候,匹配成功,索引位置从0开始。
  2.元字符。

元字符           描述
. 查找任意的单个字符,除换行符外
\w 任意一个字母或数字或下划线,A_Za_Z0_9,_中任意一个
\W 查找非单词的字符,等价于[^A_Za_z0_9_]
\d 匹配一个数字字符,等价于[0-9]
\D 匹配一个非数字字符,等价于[^0-9]
\s 匹配任何空白字符,包括空格,制表符,换行符等等。等价于[\f\n\r\t\v]
\S 匹配任何非空白字符,等价于[^\f\n\r\t\v]
\b
匹配一个单词边界,也就是指单词和空格间的位置,比如’er\b’可以匹配”never”中

的”er”,但是不能匹配”verb”中的”er”

\B 匹配非单词边界,’er\B’能匹配’verb’中的’er’,但不能匹配’never’中的’er’
\0
查找NUL字符。

\n 匹配一个换行符
\f 匹配一个换页符
\r 匹配一个回车符
\t 匹配一个制表符
\v 匹配一个垂直制表符
\xxx 查找一个以八进制数xxx规定的字符
\xdd 查找以16进制数dd规定的字符
\uxxxx 查找以16进制数的xxxx规定的Unicode字符。

  3.转义字符。需要转义的特殊字符前面加 \

三、正则中[]、{}、()的含义

  1. []:方括号包含一系列字符,能够匹配其中任意一个字符, 如

  [a-z]: 查找从小写a到z中的任意一个字符;

  [^a-z]: 查找除a到z之外的任意一个字符;

  表达式[bcd][bcd] 匹配 "abcde"时候,匹配成功,内容是bc,匹配到的位置开始于1,结束与3;如下代码:

  var str = "abcde";

  console.log(str.match(/[bcd][bcd]/)); // ["bc", index: 1, input: "abcde"]

  2.{}:  { 标记限定符开始的地方, n{x}  匹配包含x个的n的序列字符串.

  3. (): 在被修饰匹配次数的时候,括号中的表达式可以作为整体被修饰。取匹配结果的时候,括号中的表达式匹配到的内容可以被单独得到。

四、量词


n+


匹配任何至少包含一个n的字符串


n*


匹配零个或者多个n的字符串


n?


匹配零个或者1个n的字符串


n{x}


匹配包含x个n的序列字符串


n{x,y}


匹配至少x个,最多y个n的字符串


n{x,}


匹配至少x个的字符串


n$


匹配以n结尾的字符串


^n


匹配以n开头的字符串


?=n


匹配其后紧接指定的n字符串


?!n


匹配其后没有紧接指定的n字符串

五、字符串的正则方法

  a. match()方法该方法用于在字符串内检索指定的值,或找到一个或者多个正则表达式的匹配。

  stringObject.match(searchValue)   stringObject.match(regexp)

  searchValue 需要检索字符串的值;regexp: 需要匹配模式的RegExp对象。返回值中存放匹配成功的数组; 它可以全局匹配模式,全局匹配的话,它返回的是一个数组。如果没有找到任何的一个匹配,那么它将返回的是null;返回的数组内有三个元素,第一个元素的存放的是匹配的文本,还有二个对象属性;index属性表明的是匹配文本的起始字符在stringObject中的位置;input属性声明的是对stringObject对象的引用.

  var str = "welcome to China";
  console.log(str.match("come")); // [0:"come", index: 3, input: "welcome to China"]
  console.log(str.match("Come")); // null
  console.log(str.match(/come/)); // [0:"come", index: 3, input: "welcome to China"]

  b. replace()方法该方法用于在字符串中使用一些字符替换另一些字符,或者替换一个与正则表达式匹配的子字符串;

  stringObject.replace(需要被替换的字符串或RegExp对象,用来替换的文本或函数);

  返回替换后的新字符串

   注意:字符串的stringObject的replace()方法执行的是查找和替换操作,替换的模式有2种,既可以是字符串,也可以是正则匹配模式,如果是正则匹配模式的话,那么它可以加修饰符g,代表全局替换,否则的话,它只替换第一个匹配的字符串。

  var str = "welcome to China";

  var s1 = str.replace("we","a");
  console.log(s1);// alcome to China

  var s2 = str.replace(/e/,"b");
  console.log(s2); //wblcome to China

  var s3 = str.replace(/o/g,‘x‘);
  console.log(s3); //welcxme tx China

  c. search(). 该方法用于检索字符串中指定的子字符串,或检索与正则表达式相匹配的字符串。

  stringObject.search(要检索的字符串或RegExp对象); 

  返回值是stringObject中第一个与regexp对象相匹配的子串的起 始位置。如果没有找到任何匹配的子串,则返回-1;search()方法不执行全局匹配,它将忽略标志g,同时它也没有regexp对象的lastIndex的属性,且总是从字符串开始位置进行查找,总是返回的是stringObject匹配的第一个位置。

  var str = "welcome to China,we are family";

  console.log(str.search("we")); // 0

  d. split(). 该方法把一个字符串分割成字符串数组。

  stringObject.split(separator,howmany);

  separator[必填项],字符串或正则表达式,该参数指定的地方分割stringObject; howmany[可选] 该参数指定返回的数组的最大长度,如果设置了该参数,返回的子字符串不会多于这个参数指定的数组。如果没有设置该参数的话,整个字符串都会被分割,不考虑他的长度。返回值是一个字符串数组。该数组通过在separator指定的边界处将字符串stringObject分割成子字符串。

  var str = "welcome to China,we are family";
  console.log(str.split("e")); // ["w", "lcom", " to China,w", " ar", " family"]
  console.log(str.split("e",3)); // ["w", "lcom", " to China,w"]

六、RegExp对象方法

  1. test()方法该方法用于检测一个字符串是否匹配某个模式。  

    RegExpObject.test(需要检测的字符串);  //返回true or false

  

1   var str = "welcome to China,we are family";
2   console.log(/wel/.test(str)); // true
3   console.log(/will/.test(str)); //false

  2.exec()方法: 该方法用于检索字符串中的正则表达式的匹配。

  RegExpObject.exec(需要检测的字符串)  //返回一个数组,存放匹配的结果,如果未找到匹配,则返回值为null;

  该返回的数组的第一个元素是与正则表达式相匹配的文本,该方法还返回2个属性,index属性声明的是匹配文本的第一个字符的位置;input属性则存放的是被检索的字符串string;该方法如果不是全局的话,返回的数组与match()方法返回的数组是相同的。

  var str = "welcome to China,we are family";
  console.log(/come/.exec(str)); //["come", index: 3, input: "welcome to China,we are family"]
  console.log(/will/.exec(str)); // null

  

    

时间: 2024-10-10 18:08:49

JavaScript正则表达式的学习的相关文章

JavaScript正则表达式-学习笔记(不定期更新)

JavaScript权威指南学习笔记,禁止转载! 8.正则表达式 在常见的字符串检索或替换中,我们需要提供一种模式表示检索或替换的规则. 正则表达式使用单个字符串来描述.匹配一系列符合某个句法规则的字符串. 使用: /\d\d\d/.test("123");  //true new RegExp("Bosn").test("Hi,Bosn");  //true 正则基础: . 任何字符(除换行符以外) /-/.test('[email prote

JavaScript 正则表达式学习

一直想学习正则表达式,学习完之后想总结一下,发现我学习的很片面,总结的也只是部分,网上前辈总结的很多,也很全面,这里就记录一下我的学习记录吧,以便后面再学习,如有错误,请指正. 下面将直接贴出代码: <script type="text/javascript"> $(function(){ // ***************************************************************************************//

Javascript正则表达式的初步学习

1 <html> 2 <head> 3 <meta charset="utf-8"> 4 <title>正则表达式的学习</title> 5 </head> 6 <body> 7 8 <script language="javascript"> 9 //创建正则表达式,RegExp是一个对象,test是一个方法 10 //第一个参数是正则表达式的文本内容 11 //第二个

JavaScript正则表达式学习笔记之一 - 理论基础

自从年前得空写了两篇文章之后就开始忙了,这一忙就是2个月??.当时信誓旦旦说的定期写篇博客的计划也就泡汤了??,不过好在最近有空,顺便总结一下这两个月遇到的几个问题.第一个问题就是项目中用到了一些正则才发现之前被自己忽略的正则是时候补一补了.恰逢今天周六??,就把自己学习JavaScript正则表达式的笔记整理成文,写了这篇关于正则表达式理论基础的文章,希望本文能对有需要的同学提供帮助.号外:本文相对基础,大神请忽略??. 一. 基本概念 正则表达式是用于匹配字符串中字符组合的模式. 一种几乎可

Java学习总计(二十六)——JavaScript正则表达式,Js表单验证,原生js+css页面时钟

一.JavaScript正则表达式1.exec检索字符串中指定的值,返回找到的值,并确定其位置2.test检索字符串中指定的值,返回true或false3.正则表达式对象的创建:(1)方式一:Var rgex=new RegExp("[0-9]","模式");(2)方式二:简便写法,用双斜杠//把正则表达式的内容括起来例1(正则创建,使用test()方法): <!DOCTYPE html> <html> <head> <me

javascript正则表达式和字符串RegExp

这篇文章主要介绍了javascript正则表达式和字符串RegExp and String(一)的相关资料,需要的朋友可以参考下 前言 正则表达式是javascript非常重要和常用的功能,在jquery等大型框架中用的非常频繁,最近抽时间学习了解了相关知识,记录下来与需要的朋友分享. 思维导图: RegExp(正则表达式)的创建方式 可以通过两种方式创建一个RegExp,具体如下: 通过/-./的方式来创建正则表达式(注意: /--/两边是没有单引号或双引号的) 通过RegExp构造方法来创建

正则表达式入门教程&amp;&amp;经典Javascript正则表达式----share

前言 例子: ^[email protected]+\\..+$ 这样的代码曾经多次把我自己给吓退过.可能很多人也是被这样的代码给吓跑的吧.继续阅读本文将让你也可以自由应用这样的代码. 正文 教程:正则表达式30分钟入门教程 一个学习正则表达式不错的教程,对正则表达式有兴趣,但不太了解的童鞋可以参考下 以下内容摘自 常用JQuery数字类型验证正则表达式整理  和    经典Javascript正则表达式         [  留个备份 :) ~~  ]     常用JQuery数字类型验证正则

javascript正则表达式笔记(转载)

在javascript里面的定义 1.通过RegExp构造函数定义一个正则表达式.第一个参数为正则表达式以字符串传入,第二个参数为修饰符也以字符串传入. 例:var caps = new RegExp("[A-Z]", "g"); 2.直接定义一个正则表达式直接量,表达式右正斜杠符号"/"分隔,后直接跟修饰符.(推荐用这种) 例:var caps = /[A-Z]/g; javascript正则表达式常用的字符 字符 描述 例子 [exp] 对于

5分钟教你学会JavaScript正则表达式

正则表达式在实际开发过程中和技术面试过程中的重要性不言而喻,本文仅仅只是教你如何在几分钟之类学会正则表达式,对于它的原理及运行机制不做介绍. 第一:什么是正则 正则表达式是一种用来描述一定数量文本的模式,用来匹配相同规范样式的文本.在JavaScript中用RegExp对象表示正则表达式( 即Regular Eexpression),它是对字符串执行模式匹配的强大工具.我们可以参看W3C所给的说明. 第二:创建一个正则表达式 在JavaScript中创建正则表达式,有2种方式,隐式和显式创建.