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

JavaScript权威指南学习笔记,禁止转载!

8、正则表达式

在常见的字符串检索或替换中,我们需要提供一种模式表示检索或替换的规则。

正则表达式使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。

使用:

/\d\d\d/.test(“123”);  //true

new RegExp(“Bosn”).test(“Hi,Bosn”);  //true

正则基础:


.


任何字符(除换行符以外)


/…/.test(‘[email protected]’)


\d


数字0-9


/\d\d\d/.test(‘123’)


\D


非\d,即不是数字0-9的字符


/\D\D\D/.test(‘ab!’)


\w


字母a-zA-Z,数字0-9,下划线


/\w\w\w\w/.test(‘aB9_’)


\W


非\w


/\W\W\W/.test(‘@!#’)


\s


空格符、Tab、换页符、换行符


/\sabc/.test(‘ abc’)


\S


非\s


\t\r\n\v\f


Tab、回车、换行、垂直制表符、换页符


[]


字符范围


[a-z] [0-9] [A-Za-z0-9]


[^ ]


字符范围以外


[^a-z]


^


行首


^Hi


$


行尾


test$


\b


零宽单词边界


\bno匹配‘a_no’


\B


非\b


转义符\


匹配 . ^ $ 这些字符前加上特殊转义符 \


/\^abc/.test(‘^abc’)


()


分组


\n


表示使用分组符()匹配到的字符串


/(abc)\1/.test(‘abcabc’)


(?:)


仅分组


/(?:abc)(def)\1/.test(‘abcdefdef’)


x*,x+


重复0或多次,重复1或多次(贪婪算法)


abc*匹配ab,abc,abccc

abc+匹配abc,abccc


x*?,x+?


x+?:匹配x自身

非贪婪算法


abc*?在字符串abcccc中匹配ab

abc+?在字符串abcccc中匹配abc


x?


重复0或1次


x|y


x或y


x|y匹配x也匹配y


x{n}

x{n,}

x{n,m}


重复n次

重复>=n次

n=<重复次数<=m


x{5}匹配xxxxo

x{1,3}匹配x,xx,xxx

三个flag

global(正常匹配到一个就结束了,若需匹配到所有的情况则用global标签),

ignoreCase(不区分大小写)

multiline(可以跨行检索)

如何设置标签:

/abc/gim.test(‘ABC’);  //true

RegExp(“abc”,“mgi”) .test(‘ABC’);  //true

RegExp对象属性:global、ingoreCase、multiline、source

/abc/g.global  //true

/abc/g.ignoreCase  //false

/abc/g.multiline  //false

/abc/g.source  //“abc”正则的内容

RegExp对象方法:compile、exec、test、toString

/abc/.exec(“abcdef”); //“abc”返回用正则去匹配字符串匹配的结果

/abc/.test(“abcdef”);  //true

/abc/.toSTring();  //  “/abc/”返回正则的内容

var reg=/abc/; reg.compile(“def”);reg.test(“def”);  //true改写正则的内容

string类型与正则相关的方法

String.prototype.search 返回正则在字符串中的索引

“abcabcdef” .search(/abc\1/);  //0(索引为0)

String.prototype.replace 替换字符

“aabbbbcc”.replace(/b+?/,“1”);  // aa1bbbcc

String.prototype.match返回一个数组,数组元素是正则的内容

“aabbbbcc”.match(/b+/);   //[“bbbb”]

“aabbbbccbbaa”.match(/b+/g);   //[“bbbb”,“bb”]

String.prototype.split分割字符串,返回一个数组

“aabbbbccbbaa”.split(/b+/);  //[“aa”,“cc”,“aa”]

应用

//校验密码:只能输入6-20个字母、数字、下划线

/^(\w){6,20}$/

学会正则会大大提高编程效率!!!

时间: 2024-08-03 19:22:20

JavaScript正则表达式-学习笔记(不定期更新)的相关文章

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

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

LDD和scull相关各种结构体的故事(学习笔记 不定期更新)

LDD和各种结构体的故事 struct scull_dev     位置:scull/scull.h struct scull_dev { struct scull_qset *data; /* Pointer to first quantum set */ int quantum; /* the current quantum size */ int qset; /* the current array size */ unsigned long size; /* amount of data

Javascript之学习笔记每日更新

1.输出文本 document.write(Date());输出当前时间 2.使用Jacascript改变HTML元素 //定义一个p标签,此p标签带有id元素 <p id="demo">我的第一个段落</p> //改变HTML元素 <script> document.getElementById("demo").innerHTML="段落已经被修改"; </script>

正则表达式学习笔记---揭开正则表达式的神秘面纱

正则表达式学习笔记 如果我们问那些UNIX系统的爱好者他们最喜欢什么,答案除了稳定的系统和可以远程启动之外,十有八九的人会提到正则表达式:如果我们再问他们最头痛的是什么,可能除了复杂的进程控制和安装过程之外,还会是正则表达式.那么正则表达式到底是什么?如何才能真正的掌握正则表达式并正确的加以灵活运用?本文将就此展开介绍,希望能够对那些渴望了解和掌握正则表达式的读者有所助益. 入门简介 简单的说,正则表达式是一种可以用于模式匹配和替换的强有力的工具.我们可以在几乎所有的基于UNIX系统的工具中找到

Linux学习笔记——Ubuntu更新软件源

0.前言 通过修改ubuntu软件源可提高apt命令下载安装软件的速度. 参考资料 [官方资料]--配置文件修改方法 [Ubuntu怎样修改软件源地址]--使用ubuntu软件中心修改(推荐) [at-get update错误处理] 1.使用ubuntu软件中心更新 请参考[Ubuntu怎样修改软件源地址]--来自百度经验 图1 打开软件和更新 图2 选择国内软件源 2.使用指令方法修改 [1]首先备份源列表 sudo cp /etc/apt/sources.list /etc/apt/sour

JavaScript闭包学习笔记

原文:JavaScript闭包学习笔记 闭包(closure)是JavaScript语言的一个难点,也是它的特色,很多高级应用都要依靠闭包实现. 下面就是我的学习笔记,对于JavaScript初学者应该是很有用的. 一.变量的作用域 要理解闭包,首先必须理解JavaScript特殊的变量作用域. 变量的作用域无非就是两种:全局变量和局部变量. JavaScript语言的特殊之处,就在于函数内部可以直接读取全局变量. 1 var n=999; 2 3 function f1() { 4 alert

javascript面向对象学习笔记(二)——创建对象

javascript面向对象学习笔记(二)--创建对象 工厂模式 该模值抽象了创建具体对象de过程.用函数来封装噫特定接口创建对象的细节. function createPerson(name,age,job){ var o=new Object(); o.name=name; o.age=age; o.job=job; o.sayName=function(){ alert(this.name); }; return o; } var person1=createPerson("Chiaki&

一步步写 CMOS 驱动模块 &lt;ELDD 学习笔记&gt; (最近更新,写到open release为止)

一步步写 CMOS 驱动模块 Let's implement a char driver to access the system CMOS. 首先仅仅是创建设备模块,最简单的,类似于前面hello world模块一样的东东,从最简单的框架慢慢搭 /************************************************************ code writer : EOF code date : 2014.08.15 code file : cmos_demo.c

正则表达式学习笔记系列----1

正则表达式是一种字符模式,在匹配文本文件的内容的时候,使用一组特殊的符号,匹配出我们想要的内容. 为什么用正则表达式 搜索(匹配)出我们想要的看到的精简的内容. 正则表达式的元字符: 元字符 功能 样例 匹配样例 ^       行首定位符           /^root/ 匹配以root开头的行 $         行尾定位符           /bash$/ 匹配以bash结尾的行 .         匹配单个字符       /l.ve/ 匹配love,live等等,在l和v中间有一个