Java Script基础(十二) 正则表达式
一、正则表达式中常用的符号
虽然可以使用string函数来完成验证,但是这种验证方式不够严谨,而且编写比较麻烦。而正则表达式是一种描述字符模式的对象,由一些特殊的符号组成,其组成的字母模式用来匹配各种表达式。下表中列举出常用的符号和用法。
符号 | 描述 |
/....../ | 代表一个模式的开始和结束。 |
^ | 匹配字符串的开始 |
$ | 匹配字符串的结束 |
\s | 任何空白字符 |
\S | 任何非空白字符 |
\d | 匹配一个数字字符,等价于[0-9]。 |
\D | 匹配数字之外的任何数字,等价于[^0-9]。 |
\w | 匹配一个数字,下划线或者字母字符,等价于[A-Za-z0-9_]。 |
\W | 匹配非单字字符,等价于[^A-Za-z0-9_] |
. | 除了换行符之外的任意字符。 |
上表中的字符表示可以匹配哪些字符,字符可以出现的次数同样需要用特殊符号表示。如下标所示。
符号 | 描述 |
{n} | 匹配前一项n次。 |
{n,} | 匹配前一项n次以上。 |
{n,m} | 匹配前一项n次,但不能超过m次。 |
* | 匹配前一项0次或多次,等价于{0,} |
+ | 匹配前一项1次或多次,等价于{1,} |
? | 匹配前一项0次或者1次,也就是说前一项是可选的,等价于{0,1}; |
通过上面两张表,可以了解正则表达式的一些符号的作用,其中"$","+","?","*","^",".","\"等符号都被赋予了特殊的含义,如果在正则表达式中需要匹配这些字符本身,需要使用转移字符反斜杠"\"来进行匹配,比如"\."表示匹配一个".",\$表示匹配一个"$"符号。
二、正则表达式的RegExp对象。
RegExp(Regular Expression,正则表达式)对象时对象时对字符串执行模式匹配的强大工具。定义正则表达式有两种方式,一种是普通方式,另一种是构造函数方式。
1、普通方式:
var reg = /表达式/附加函数
在语法中:
表达式:一个字符串,指定了正则表达式的模式。
附加参数:用来扩展表达式的含义,主要有一下3个参数:
g:代表可以进行全局匹配。
i:代表不区分大小写匹配。
m:代表可以进行多行匹配。
上面3个参数可以任意组合,代表复合含义,当然也可以不加参数。
例:
var reg = /blue/; var reg = /blue/gi; var reg = /^\d{2,8}$/m; var reg = /^\w+@\w+(\.[A-Za-z]{2,3}){1,2}$/; //电子邮件
2、构造函数方式
var reg = new RegExp(表达式,附加参数);
其中表达式和附加参数的含义和上面完全相同,
例如:
var reg = new RegExp("blue");
var reg = new RegExp("blue","g");
如果表达式是正则表达式而不是字符串时,"可以省略。
var reg = new RegExp(/^\w+@\w+(\.[A-Za-z]{2,3}){1,2}$/);
注意:
普通方式中的表达式必须是一个常量字符串,而构造函数中的表达式可以是常量字符串,也可以使一个JavaScript变量。例如:根据用户输入的值作为正则表达式的参数:
var reg = new RegExp(document.getElementById("id").value,"g");
3、test()
test(string)方法用于验证字符串是否符合要求,如果符合返回true,不符合则返回false。
var email = "zhangsan@qq.com";
var reg = new RegExp(/^\w+@\w+(\.[A-Za-z]{2,3}){1,2}$/);
reg.test(email);
结果:true
三、String对象和正则表达式
JavaScript除了支持RegExp对象的正则表达式方法外,还支持String对象的正则表达式方法,String对象定义了使用正则表达式来执行强大的模式匹配和文本检索与替换函数的方法,String常用的方法如下所示:
1、match():
match()方法可以再字符串内检索指定的值,找到一个或多个正则表达式的匹配。
语法:
字符串对象.match(searchString或regexpObject);
searchString是要检索的字符串的值
regexpObject是规定要匹配模式的regexp对象。
例如:
var str = "my cat";
var reg = /cat/;
var result=str.match(reg);
result的值为:cat。
2、search():
search()方法用于检索字符串中指定的子字符串,或检索与正则表达式相匹配的子字符串。该方法不执行全局匹配,返回子字符串的第一个匹配的位置,如果没找到任何匹配的子串,则返回-1,与String的indexOf()方法类似。
语法:
字符串对象.search(searchString或regexpObject);
searchString是要检索的字符串的值
regexpObject是规定要匹配模式的regexp对象。
例如:
var str = "hello rock!rock!";
var result = str.search(/rock/);
result的值为:6;
3、replace():
repleace()方法用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串。
语法:
字符串对象.replace(RegExp对象获字符串,"替换的字符串")
如果设置了全文检索,则符合条件的RegExp或字符串都将被替换,否则只替换第一个,返回替换后的字符串,例如:
var str = "My little white cat,is really a very lively cat";
var result = str.replace(/cat/,"dog");
var results = str.reaplace(/cat/g,"dog");
result的值: My little white dog,is really a very lively cat
results的值:My little white dog,is really a very lively dog
4、split():
split()方法将字符串分割成一系列子串并通过一个数组将这一系列子串返回。
语法:
字符串对象.split(分隔符,n);
分隔符可以使字符串,也可以使正则表达式。n为限制输出数组的个数,为可选项,如果不设置n,则返回包含整个字符串的元素数组,例如:
var str = "red,blue,green,white";
var result = str.split(",");
var string = "";
for(var i = 0;i<result.length;i++){
string+=result[i] + "_";
}
document.write(string);
结果为:
red_blue_green_white_;
Java Script基础(十二) 正则表达式的更多相关文章
- Java Script基础(二) 基本语法
一.变量的声明和使用 JavaScript是一种弱类型的语言,没有明确的数据类型,在声明变量时,不需要指定变量的类型,变量的类型由赋给变量的值决定. 变量声明的语法: var 变量名; 示例: var ...
- Java基础十二--多态是成员的特点
Java基础十二--多态是成员的特点 一.特点 1,成员变量. 编译和运行都参考等号的左边. 覆盖只发生在函数上,和变量没关系. Fu f = new Zi();System.out.println( ...
- Bootstrap <基础十二>下拉菜单(Dropdowns)
Bootstrap 下拉菜单.下拉菜单是可切换的,是以列表格式显示链接的上下文菜单.这可以通过与 下拉菜单(Dropdown) JavaScript 插件 的互动来实现. 如需使用下列菜单,只需要在 ...
- Java设计模式(十二) 策略模式
原创文章,同步发自作者个人博客,http://www.jasongj.com/design_pattern/strategy/ 策略模式介绍 策略模式定义 策略模式(Strategy Pattern) ...
- Java script基础
Java script基础 Js的每个语句后面都要有分号. <script type="text/java script">所有JS内容</script> ...
- “全栈2019”Java多线程第二十二章:饥饿线程(Starvation)详解
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java多 ...
- “全栈2019”Java多线程第十二章:后台线程setDaemon()方法详解
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java多 ...
- “全栈2019”Java异常第二十二章:try-with-resources语句详解
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java异 ...
- “全栈2019”Java异常第十二章:catch与异常匹配
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java异 ...
- “全栈2019”Java第一百一十二章:什么是闭包?
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...
随机推荐
- 从输入一个URL到页面呈现,网络上都发生了什么?
归纳一下其中涉及到前端的一些基础知识,主要包括:http协议.web标准.w3c标准等. 这个问题虽然只有两个2个动作:输入URL和呈现页面,但这背后发生了很多"有趣" ...
- iOS多线程总结
1.不要同时开太多的线程(1~3条线程即可,不要超过5条) 2.线程概念 1> 主线程 : UI线程,显示.刷新UI界面,处理UI控件的事件 2> 子线程 : 后台线程,异步线程 3.不要 ...
- 4.接口隔离原则(Interface Segregation Principle)
1.定义 客户端不应该依赖它不需要的接口: 一个类对另一个类的依赖应该建立在最小的接口上. 2.定义解读 定义包含三层含义: 一个类对另一个类的依赖应该建立在最小的接口上: 一个接口代表一个角色,不应 ...
- 初始化css代码需要注意的
(从已经死了一次又一次终于挂掉的百度空间人工抢救出来的,发表日期 2014-05-06) 写在所有css代码之前,对网页中所有同类元素的一个样式规则代码或者一些基础性公用元素的样式规则代码. 1.空白 ...
- C# 动态执行批处理命令
本文转载:http://www.cnblogs.com/lenic/p/4097045.html C# 动态执行一系列控制台命令,并允许实时显示出来执行结果时,可以使用下面的函数.可以达到的效果为: ...
- SCCM客户端推送/卸载
站点配置--站点--层次结构设置--自动批准客户端 ccm客户端安装日志:服务器端的ccm.log安装ccm客户端,需要添加一个具有访问客户端$admin权限的账户,如下:站点名称-右键 客户端安装设 ...
- 如何修改meclipse中的默认浏览器
window------->preferrences------------>general-------------->web browser---------->选择你要使 ...
- 开源图形库 c语言-图形图像库 集合[转]
开源图形库 c语言-图形图像库 集合[转] Google三维API O3D O3D 是一个开源的 Web API 用来在浏览器上创建界面丰富的交互式的 3D 应用程序.这是一种基于网页的可控3D标准. ...
- JS的注意点
JS的跨域访问问题. http://www.cnblogs.com/rush/archive/2012/05/15/2502264.html JS能操作的范围:HTTP协议的内容.但是不能直接访问re ...
- Java RESTful Web Service相关概念
原文地址:http://1.liangtao.sinaapp.com/?p=647 接上一篇文章REST|RESTful初步认识:p=639">http://1.liangtao.si ...