javascript 正则表达式基础知识汇总

正则表达式:对字符串中的信息实现查找、替换和提取操作。(不支持注释和空白,必须写在一行内)
正则表达式的创建:包含在一对斜杠之间的字符(直接量语法)
例如:
var pattern = /s$/;        // 创建一个正则来匹配所有以字母s结尾的字符串,并赋值给pattern

一 、字符类:
将直接量字符单独放进方括号内就组成了字符类。
一个字符类可以匹配它所包含的任意字符。
正则表达式的字符类:
[...]      方括号内的任意字符
[^...]    不在方括号内的任意字符
.           除换行符和其他Unicode行终止符之外的任意字符
\w        任何ASCII字符组成的单词 等价于[a-zA-Z0-9]
\W        任何非ASCII字符组成的单词 等价于[^a-zA-Z0-9]
\s         任何Unicode空白符
\S        任何非Unicode空白符
\d        任何ASCII数字 等价于[0-9]
\D        任何非ASCII数字 等价于[^0-9]
[\b]      退格直接量(特例)
例如:/[a,b,c]/       表示和字母a,b,c中的任意一个都匹配
   /[\s\d]/        表示匹配任意空白字符或者数字

二、重复:
用以表示指定字符重复的标记
正则表达式的重复字符语法:
{n,m}      匹配前一项至少n次,但不超过m次
{n,}     匹配前一项n次或者更多次
{n}      匹配前一项n次
?       匹配前一项0次或者1次,也就是前一项是可选的,等价于{0,1}
+         匹配前一项1次或多次,等价于{1,}
*          匹配前一项0次或多次,等价于{0,}

例如:/\d{2,4}/     匹配2~4个数字
   /\w{3}\d/    精确匹配3个单词和一个可选数字

三、选择、分组和引用
匹配程序:从左到右,如果左边的匹配项匹配了,就自动忽略右边的匹配项(即使可以产生更好的匹配)
①     |    用于分隔供选择的字符
   例如: /ab|cd|ef/      可以匹配字符串“ab”,"cd"或者“ef”
       /\d{3}|[a-z]{4}/       匹配3位数字或四个小写字母
②  ()
作用一:把单独项合成子表达式
作用二:在完整的模式中定义子模式
    当一个正则表达式成功的和目标字符串相匹配时,可以从目标字符串中抽出和圆括号中的子模式相匹配的部分。
    例如:
    /[a-z]+\d+/   检索一个或多个小写字母后边跟着一个或多个数字
    如果我们关心的是每个尾部的数字,则可以把模式的数字部分放到括号(/[a-z]+(\d)/),这样就可以从检索到的匹配中抽取数字了
作用三:允许在同一正则表达式的后部引入前面的子表达式
    实现方法:在字符\后加一位或多位数字(这个数字指定了带圆括号的子表达式在正则表达式中的位置)
    例如:\1    引用的是第一个带圆括号的子表达式
    注: 位置以参与计数的左括号位置为准;
    正则表达式不允许用双引号括起的内容中有单引号,反之亦然。
总结:
|       选择,匹配的是该字符左边的子表达式或右边的子表达式
(...)      组合,将几个项组合成一个单元
(...?)    只组合,把项组合到一个单元,但不记忆与该组相匹配的字符
\n        和第n个分组第一次匹配的字符相匹配,组是圆括号中的子表达式,组索引是从左到右的左括号数,(?: 这个形式的分组不参与索引编码

四、指定匹配的位置:
锚 : 指定匹配发生的合法位置
^    匹配字符串的开头
$    匹配字符串的结尾
\b   匹配一个单词的边界 (位于\w和\W之间的位置)
\B   匹配非单词边界的位置

五、修饰符:
修饰符是放在//之外的,不会出现在两条/线之间
i 不区分大小写
g 全局匹配,找到所有匹配,而不是找到第一个之后就停止
m 多行匹配

六、 用于模式匹配的String对象的方法
方法一: search() 检索与之匹配的位置
参数:一个正则表达式
返回:第一个与之匹配的子串的起始位置,如果找不到匹配的子串,返回-1
例如:

<script>
    "javascript".search(/script/i);      //返回值为4  
</script>

注:① 如果search()的参数不是正则表达式,则会通过RegExp构造函数将他转换成正则表达式
      ② search()不支持全局检索
方法二: replace() 执行检索与替换操作
参数:第一个-->正则表达式
   第二个-->要进行替换的字符串(也可是一个函数,该函数能动态的计算替换字符串)
注:① 支持g,
    正则表达式中设置了g:所有与模式匹配的子串都将替换成第二个参数指定的字符串
      正则表达式中没设置g:只替换所匹配的第一个子串
  ② 如果第一个参数不是正则,而是一个字符串时,replace()将直接搜索这个字符串

例如:将所有不区分大小写的javascript都替换成大小写正确的JavaScript

<script>
    var str = "javascript,javascript,javascript,javaScript";
    alert(str.replace(/javascript/gi,"JavaScript"));        //JavaScript,JavaScript,JavaScript,JavaScript
</script>    

方法三 : match()
参数:正则表达式
返回:由匹配结果组成的数组
支持g
实例一:

<script>
    var math = "1 plus 2 equals 3".match(/\d+/g);
    console.log(math);     // ["1", "2", "3"]
    console.log(typeof math);     //object
</script>  

实例二:

<script>
    var math = "1 plus 2 equals 3".match(/\d/);
    console.log(math);     // ["1", index: 0, input: "1 plus 2 equals 3"]
    console.log(typeof math);     //object
</script>    

注意:
给字符串的math()传入一个非全局的正则表达式:
匹配情况:只检索第一个匹配
返回值:数组
    数组第一个元素:所匹配的字符串
    数组第二个元素:正则表达式中用圆括号括起来的子表达式,返回的数组有两个属性-->index和input

方法四: split()
返回值:数组
分隔符:split()的参数
例如:

<script>
    var str= "1,2,3,4,5,6,7,8".split(‘,‘);
    console.log(str); //["1", "2", "3", "4", "5", "6", "7", "8"]
</script>

参数是正则表达式时(可以指定分隔符,允许两边可以留任意多的空白符)
返回:用以调用它的字符串拆分为一个子字符串组成的数组

<script>
    var str= "1,2,3,4,5,6,7,8".split(/\s*,\s*/);     //允许两边留任意多的空白符
    console.log(str);     //["1", "2", "3", "4", "5", "6", "7", "8"]
</script>

七、RegExp 对象

RegExp()构造函数:
参数:两个字符串参数
第一个:正则表达式的主体部分(两个斜杠之间的文本)
第二个:(可选)指定正则表达式的修饰符(g,i,m这三者或这三者的组合)
注意:无论是字符串直接量还是正则表达式都使用/字符作为转译字符的前缀
例如:
var zipCode = new RegExp(‘\\d{5}‘,‘g‘); //全局匹配字符串中的5个数字,注意这里是//而不是/

时间: 2025-01-11 18:31:08

javascript 正则表达式基础知识汇总的相关文章

javascript之正则表达式基础知识小结

javascript之正则表达式基础知识小结,对于学习正则表达式的朋友是个不错的基础入门资料. 元字符 ^ $ . * + ? = ! : | \ / ( ) [ ] { } 在使用这些符号时需要用“\”来进行转移. 如果记不清楚那些标点符号需要转移,可以在使用标点符号时都使用反斜杠“\” 简单匹配 1.直接量 /javascript/ 匹配带有“javascript”的字符串 比如“javascript is an object-oriented scripting language” 2.[

javascript的基础知识及面向对象和原型属性

自己总结一下javascript的基础知识,希望对大家有用,也希望大家来拍砖,毕竟是个人的理解啊 1.1 类型检查:typeof(验证数据类型是:string) var num = 123; console.log(typeof num); // 1.2 in 运算符 作用:判断指定属性是否存在于指定的对象中. 如果指定的属性存在于指定的对象中,则 in 运算符会返回 true. 语法: 属性 in 对象 返回值:true 或者 false 示例: var obj = { age: 18 };

Delphi基础知识汇总

☆Delphi基础数据类型 分类 范围 字节 备注 简单类型 序数 整数 Integer -2147483648 .. 2147483647 4 有符号32位 Cardinal 0 .. 4294967295 4 无符号32位 Shortint -128 .. 127 1 有符号8位 Smallint -32768 .. 32767 2 有符号16位 Longint -2147483648 .. 2147483647 4 有符号32位 Int64 -263 .. 263 8 有符号64位 Byt

转:正则表达式基础知识

一个正则表达式就是由普通字符(例如字符 a 到 z)以及特殊字符(称为元字符)组成的文字模式.该模式描述在查找文字主体时待匹配的一个或多个字符串.正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配.如: JScript VBScript 匹配 /^\[ \t]*$/ "^\[ \t]*$" 匹配一个空白行. /\d{2}-\d{5}/ "\d{2}-\d{5}" 验证一个ID 号码是否由一个2位数字,一个连字符以及一个5位数字组成. /<(.*)&

PB编程基础知识汇总

PB编程基础知识汇总 第一章      1.  程序的开始,application的open事件. 退出程序例程:halt为退出函数 int SureQuit SureQuit = 2 SureQuit=Messagebox("退出系统","退出前请确认已保存好数据",Question!,OKCancel!, 2) if SureQuit = 1 then halt 2.  变量定义有效范围: ◎     declare-globe 全局变量,整个程序均有效 ◎  

沉淀,再出发:Java基础知识汇总

沉淀,再出发:Java基础知识汇总 一.前言 不管走得多远,基础知识是最重要的,这些知识就是建造一座座高楼大厦的基石和钢筋水泥.对于Java这门包含了编程方方面面的语言,有着太多的基础知识了,从最初的语法,对象的定义,类.接口.继承.静态.动态.重载.覆盖这些基本的概念和使用方法,到稍微高级一点的多线程,文件读写,网络编程,GUI使用,再到之后的反射机制.序列化.与数据库的结合等高级一点的用法,最后将设计模式应用其中,产生了一个个新的概念,比如Spring.Spring MVC.Hibernat

整理JavaScript高级基础知识

整理JavaScript高级基础知识 因为空余时间很多..所以博客更新频率得相对频繁些.. 原型以及原型链 考察原型以及原型链: var object = {} object.__proto__ === Object.prototype // 为 true var fn = function(){} fn.__proto__ === Function.prototype // 为 true fn.__proto__.__proto__ === Object.prototype // 为 true

C++ 基础知识汇总 持续更新

摘录一些C++面试常考问题,写一些自己的理解,欢迎来摘果子. static关键字 用于声明静态对象: 静态函数只在本文件可见.(默认是extern的) 全局静态对象:全局静态对象,存储在全局/静态区,作用域整个程序,在程序结束才销毁: 局部静态对象:在函数内部加上static声明的变量,在首次调用时初始化,然后一直驻留在内存,作用域是该函数,可用于函数调用计数(primary有例子),程序结束释放: 静态数据成员:归属于类,类对象共享,类外初始化,类对象可访问: 静态函数成员:归属于类,只能访问

正则表达式基础知识(一)

之前在linux中用到三剑客grep.awk.sed等,简单的接触过正则表达式,但是没有深入的了解正则表达式,又一次在python里面接触到正则表达式,所以想着尽量一次攻克正则表达式,所以就将自己学习印记留在此处,供自己复习,同时也将相关知识分享给大家. 分享几个在线测试与学习正则的地址: (1)http://deerchao.net/tutorials/regex/regex.htm  正则表达式30分钟入门 (2)http://tool.oschina.net/regex/ 在线测试以及有部