JavaScript RegExp对象
一、什么是RegExp
2、当您检索某个文本时,能够使用一种模式来描写叙述要检索的内容。RegExp 就是这样的模式。
3、简单的模式能够是一个单独的字符。
更复杂的模式包含了很多其它的字符,并可用于解析、格式检查、替换等等。
您能够规定字符串中的检索位置,以及要检索的字符类型,等等。
二、RegExp对象
1、说明
var test = new RegExp("e")
2、语法
a、直接量语法
/pattern/attributes
b、创建RegExp对象语法
new RegExp(pattern,attributes);
3、參数
參数 pattern 是一个字符串,指定了正則表達式的模式或其它正則表達式。
參数 attributes 是一个可选的字符串,包括属性 "g"、"i" 和 "m",分别用于指定全局匹配、区分大写和小写的匹配和多行匹配。
4、返回值
一个新的 RegExp 对象,具有指定的模式和标志。假设參数 pattern 是正則表達式而不是字符串,那么 RegExp() 构造函数将用与指定的 RegExp 同样的模式和标志创建一个新的
RegExp 对象。
假设不用 new 运算符,而将 RegExp() 作为函数调用,那么它的行为与用 new 运算符调用时一样,仅仅是当 pattern 是正則表達式时,它仅仅返回 pattern,而不再创建一个新的
RegExp 对象。
5、修饰符
修饰符 | 描写叙述 |
---|---|
i | 运行对大写和小写不敏感的匹配。 |
g | 运行全局匹配(查找全部匹配而非在找到第一个匹配后停止)。 |
m | 运行多行匹配。 |
6、方括号
方括号用于查找某个范围内的字符:
表达式 | 描写叙述 |
---|---|
[abc] | 查找方括号之间的不论什么字符。 |
[^abc] | 查找不论什么不在方括号之间的字符。 |
[0-9] | 查找不论什么从 0 至 9 的数字。 |
[a-z] | 查找不论什么从小写 a 到小写 z 的字符。 |
[A-Z] | 查找不论什么从大写 A 到大写 Z 的字符。 |
[A-z] | 查找不论什么从大写 A 到小写 z 的字符。 |
[adgk] | 查找给定集合内的不论什么字符。 |
[^adgk] | 查找给定集合外的不论什么字符。 |
(red|blue|green) | 查找不论什么指定的选项。 |
7、元字符
元字符(Metacharacter)是拥有特殊含义的字符:
元字符 | 描写叙述 |
---|---|
. | 查找单个字符,除了换行和行结束符。 |
\w | 查找单词字符。 |
\W | 查找非单词字符。 |
\d | 查找数字。 |
\D | 查找非数字字符。 |
\s | 查找空白字符。 |
\S | 查找非空白字符。 |
\b | 匹配单词边界。 |
\B | 匹配非单词边界。 |
\0 | 查找 NUL 字符。 |
\n | 查找换行符。 |
\f | 查找换页符。 |
\r | 查找回车符。 |
\t | 查找制表符。 |
\v | 查找垂直制表符。 |
\xxx | 查找以八进制数 xxx 规定的字符。 |
\xdd | 查找以十六进制数 dd 规定的字符。 |
\uxxxx | 查找以十六进制数 xxxx 规定的 Unicode 字符。 |
8、量词
量词 | 描写叙述 |
---|---|
n+ | 匹配不论什么包括至少一个 n 的字符串。 |
n* | 匹配不论什么包括零个或多个 n 的字符串。 |
n? | 匹配不论什么包括零个或一个 n 的字符串。 |
n{X} | 匹配包括 X 个 n 的序列的字符串。 |
n{X,Y} | 匹配包括 X 或 Y 个 n 的序列的字符串。 |
n{X,} | 匹配包括至少 X 个 n 的序列的字符串。 |
n$ | 匹配不论什么结尾为 n 的字符串。 |
^n | 匹配不论什么开头为 n 的字符串。 |
?=n | 匹配不论什么其后紧接指定字符串 n 的字符串。 |
?!n | 匹配不论什么其后没有紧接指定字符串 n 的字符串。 |
三、RegExp对象属性
1、global属性
"g"。假设 g 标志被设置,则该属性为 true,否则为 false。
2、ignoreCase属性
标志。假设设置了 "i" 标志,则返回 true,否则返回 false。
3、lastIndex属性
说明:1、该属性存放一个整数,它声明的是上一次匹配文本之后的第一个字符的位置。
2、上次匹配的结果是由方法 RegExp.exec() 和 RegExp.test() 找到的,它们都以 lastIndex 属性所指的位置作为下次检索的起始点。这样,就能够通过重复调用这两个方法来遍历一个字符串中的全部匹配文本。
3、该属性是可读可写的。仅仅要目标字符串的下一次搜索開始,就能够对它进行设置。当方法 exec() 或 test() 再也找不到能够匹配的文本时,它们会自己主动把 lastIndex 属性重置为 0。
4、multiline属性
2、在这样的模式中,假设要检索的字符串中含有换行符,^ 和 $ 锚除了匹配字符串的开头和结尾外还匹配每行的开头和结尾。
3、假设 m 标志被设置,则该属性为 true,否则为 false。
5、source属性
使用方法:source
属性用于返回模式匹配所用的文本。该文本不包含正則表達式直接量使用的定界符,也不包含标志 g、i、m。
语法:RegExpObject.source
四、RegExp对象方法
1、compile()
使用方法:用于在脚本运行过程中编译正則表達式。也可用于改变和又一次编译正則表達式。
语法:RegExpObject.compile(regexp,modifier)
參数:regexp表示正則表達式;modifier规定匹配的类型,分别为g、i、m
实例:在字符串中全局搜索 "no",并用 "bu" 替换。然后通过 compile() 方法,改变正則表達式,用 "bu" 替换 "no" 或 "not"
<html>
<head></head>
<body>
<script type="text/javascript">
var test="no zuo not to die"
part=/no/g
document.write(test.replace(part,"bu")+"<br/>") //返回值:bu zuo but to die
part.compile(/no(t)?/g)
document.write(test.replace(part,"bu")+"<br/>") //返回值:bu zuo bu to die
</script>
</body>
</html>
2、exec()
使用方法:用于检索字符串中的正則表達式的匹配。
语法:RegExpObject.exec(string)
參数:string表示要检索的字符串
返回值:返回一个数组,当中存放匹配的结果。假设未找到匹配,则返回值为 null。
实例:全局检索字符串中的 no:
<html>
<head></head>
<body>
<script type="text/javascript">
var test="no zuo not to die"
var part = new RegExp("no","g")
var result
while((result = part.exec(test)) != null)
{
document.write(result);
document.write("<br/>");
document.write(part.lastIndex);
document.write("<br/>");
}
</script>
</body>
</html>
返回值:no
2
no
9
3、test()
使用方法:用于检測一个字符串是否匹配某个模式.
语法:RegExpObject.test(string)
參数:string表示要检索的字符串
返回值:假设字符串 string 中含有与 RegExpObject
匹配的文本,则返回 true,否则返回 false。
实例:检索是否存在“no”
<html>
<head></head>
<body>
<script type="text/javascript">
var test="no zuo not to die"
var part = new RegExp("no","g")
var result = part.test(test)
document.write(result) //返回值:true
</script>
</body>
</html>
五、实例
1、仅仅能输入5-20个以字母开头、可带数字、“_”、“.”的字符
<html>
<head>
<script>
function Excgent(r,g){
if(r==""||g=="")
return false
else
{
var part=new RegExp(r);
if(part.exec(g))
return true;
return false
}
}
</script>
</head>
<body>
<h4>仅仅能输入5-20个以字母开头、可带数字、“_”、“.”的字串<h4>
<input type="text" id="a2" style="width:300px;"></input>
<br/>
<button onclick="alert(Excgent('^[a-zA-Z]{1}([a-zA-Z0-9]|[._]){4,19}$',a2.value))">点击</button>
<br/>
</body>
</html>
2、仅仅能输入1-20位的数字
<html>
<head>
<script>
function Excgent(r,g){
if(r==""||g=="")
return false
else
{
var part=new RegExp(r);
if(part.exec(g))
return true;
return false
}
}
</script>
</head>
<body>
<h4>仅仅能输入数字<h4>
<input type="text" id="a2" style="width:300px;"></input>
<br/>
<button onclick="alert(Excgent('^[0-9]{1,20}$',a2.value))">点击</button>
<br/>
</body>
</html>
3、仅仅能以13、159开头的手机号码
<html>
<head>
<script>
function Excgent(r,g){
if(r==""||g=="")
return false
else
{
var part=new RegExp(r);
if(part.exec(g))
return true;
return false
}
}
</script>
</head>
<body>
<h4>仅仅能13、159开头的手机号码<h4>
<input type="text" id="a2" style="width:300px;"></input>
<br/>
<button onclick="alert(Excgent('^13[0-9]{1}[0-9]{8}|^15[9]{1}[0-9]{8}',a2.value))">点击</button>
<br/>
</body>
</html>
属性用于返回模式匹配所用的文本。该文本不包含正則表達式直接量使用的定界符,也不包含标志 g、i、m。
<html>
<head></head>
<body>
<script type="text/javascript">
var test="no zuo not to die"
part=/no/g
document.write(test.replace(part,"bu")+"<br/>") //返回值:bu zuo but to die
part.compile(/no(t)?/g)
document.write(test.replace(part,"bu")+"<br/>") //返回值:bu zuo bu to die
</script>
</body>
</html>
使用方法:用于检索字符串中的正則表達式的匹配。
语法:RegExpObject.exec(string)
參数:string表示要检索的字符串
返回值:返回一个数组,当中存放匹配的结果。假设未找到匹配,则返回值为 null。
实例:全局检索字符串中的 no:
<html>
<head></head>
<body>
<script type="text/javascript">
var test="no zuo not to die"
var part = new RegExp("no","g")
var result
while((result = part.exec(test)) != null)
{
document.write(result);
document.write("<br/>");
document.write(part.lastIndex);
document.write("<br/>");
}
</script>
</body>
</html>
返回值:no
2
no
9
<html>
<head></head>
<body>
<script type="text/javascript">
var test="no zuo not to die"
var part = new RegExp("no","g")
var result
while((result = part.exec(test)) != null)
{
document.write(result);
document.write("<br/>");
document.write(part.lastIndex);
document.write("<br/>");
}
</script>
</body>
</html>
返回值:no
2
no
9
使用方法:用于检測一个字符串是否匹配某个模式.
语法:RegExpObject.test(string)
參数:string表示要检索的字符串
返回值:假设字符串 string 中含有与 RegExpObject
匹配的文本,则返回 true,否则返回 false。
实例:检索是否存在“no”
<html>
<head></head>
<body>
<script type="text/javascript">
var test="no zuo not to die"
var part = new RegExp("no","g")
var result = part.test(test)
document.write(result) //返回值:true
</script>
</body>
</html>
匹配的文本,则返回 true,否则返回 false。
<html>
<head></head>
<body>
<script type="text/javascript">
var test="no zuo not to die"
var part = new RegExp("no","g")
var result = part.test(test)
document.write(result) //返回值:true
</script>
</body>
</html>
<html>
<head>
<script>
function Excgent(r,g){
if(r==""||g=="")
return false
else
{
var part=new RegExp(r);
if(part.exec(g))
return true;
return false }
}
</script>
</head>
<body>
<h4>仅仅能输入5-20个以字母开头、可带数字、“_”、“.”的字串<h4> <input type="text" id="a2" style="width:300px;"></input>
<br/>
<button onclick="alert(Excgent('^[a-zA-Z]{1}([a-zA-Z0-9]|[._]){4,19}$',a2.value))">点击</button>
<br/>
</body>
</html>
<html>
<head>
<script>
function Excgent(r,g){
if(r==""||g=="")
return false
else
{
var part=new RegExp(r);
if(part.exec(g))
return true;
return false }
}
</script>
</head>
<body>
<h4>仅仅能输入数字<h4> <input type="text" id="a2" style="width:300px;"></input>
<br/>
<button onclick="alert(Excgent('^[0-9]{1,20}$',a2.value))">点击</button>
<br/>
</body>
</html>
<html>
<head>
<script>
function Excgent(r,g){
if(r==""||g=="")
return false
else
{
var part=new RegExp(r);
if(part.exec(g))
return true;
return false }
}
</script>
</head>
<body>
<h4>仅仅能13、159开头的手机号码<h4> <input type="text" id="a2" style="width:300px;"></input>
<br/>
<button onclick="alert(Excgent('^13[0-9]{1}[0-9]{8}|^15[9]{1}[0-9]{8}',a2.value))">点击</button>
<br/>
</body>
</html>
JavaScript RegExp对象的更多相关文章
- JavaScript RegExp 对象
JavaScript RegExp 对象 RegExp 对象用于规定在文本中检索的内容. 什么是 RegExp? RegExp 是正则表达式的缩写. 当您检索某个文本时,可以使用一种模式来描述要检索的 ...
- JavaScript RegExp对象的exec()方法
JavaScript RegExp对象的exec()方法用来匹配字符串,它的行为与match()有些不同. 对于RegExpObject.exec(),w3school上面是这样介绍的: exec() ...
- [转]JavaScript RegExp 对象参考手册
JavaScript RegExp 对象参考手册 RegExp 对象 RegExp 对象表示正则表达式,它是对字符串执行模式匹配的强大工具. 直接量语法 /pattern/attributes 创建 ...
- 【timeisprecious】【JavaScript 】JavaScript RegExp 对象
JavaScript>RegExp正则表达式 1 .From Runnob JavaScript RegExp 对象(概览) JavaScript RegExp 对象(教程) RegExp 对象 ...
- 浏览器端-W3School-JavaScript:JavaScript RegExp 对象
ylbtech-浏览器端-W3School-JavaScript:JavaScript RegExp 对象 1.返回顶部 1. JavaScript RegExp 对象 RegExp 对象 RegEx ...
- JavaScript RegExp 对象的三种方法
JavaScript RegExp 对象有 3 个方法:test().exec() 和 compile().(1) test() 方法用来检测一个字符串是否匹配某个正则表达式,如果匹配成功,返回 tr ...
- JavaScript RegExp 对象(来自w3school)
RegExp 对象用于规定在文本中检索的内容. 什么是 RegExp? RegExp 是正则表达式的缩写. 当您检索某个文本时,可以使用一种模式来描述要检索的内容.RegExp 就是这种模式. 简单的 ...
- JavaScript RegExp ——对象,语法,修饰符,方括号,元字符,量词,对象方法,对象属性
㈠RegExp 对象 正则表达式是描述字符模式的对象. 正则表达式用于对字符串模式匹配及检索替换,是对字符串执行模式匹配的强大工具. ㈡语法 var patt=new RegExp(pattern,m ...
- 【温故而知新-Javascript】对象
1 创建对象 Javascript 支持对象的概率.有多种方法可以用来创建对象. <!DOCTYPE html> <html lang="en"> < ...
随机推荐
- git-daemon的快捷搭建
使用git-daemon进行git服务器搭建 1.安装git-daemon 前提是已经安装git sudo apt-get install git git-core 然后安装git-daemon su ...
- python 获取当前日期 星期
from datetime import datetime d =datetime.today() #获取当前日期时间 d.isoweekday() #获取时间周几
- uva 1374 快速幂计算
#include <iostream> #include <cstdio> #include <cmath> #include <cstring> #i ...
- Salt Stack 官方文档翻译 - 一个想做dba的sa - 博客频道 - CSDN.NET
OSNIT_百度百科 Salt Stack 官方文档翻译 - 一个想做dba的sa - 博客频道 - CSDN.NET Salt Stack 官方文档翻译 分类: 自动运维 2013-04-02 11 ...
- 【web开发学习笔记】Structs2 Action学习笔记(一个)
1.org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter准备和运行 2. <filter-mapping&g ...
- Swift - 炫酷放射弹出按钮菜单(改造自AwesomeMenu)
这个是一个第三方按钮菜单组件,原版是使用Objective-C编写的名为AwesomeMenu的组件,地址是:https://github.com/levey/AwesomeMenu 这里改造成了Sw ...
- ios html5 设定PhoneGap开发环境
怎么样IOS平台搭建PhoneGap开发环境(PhoneGap2.5) (2013-03-13 14:44:51) 标签: c=blog&q=it&by=tag" targe ...
- python 多线程一(lock)
''' Created on Jun 17, 2013 @author: smp ''' #-*- coding:utf-8 -*- import threading import time coun ...
- DMP文件的生成和使用
1.生成dmp的程序 #include <dbghelp.h> #pragma comment(lib, "dbghelp.lib") //设置异常处理回调函数Se ...
- Spring Framework AOP具体解释
此前对于AOP的使用仅限于声明式事务,除此之外在实际开发中也没有遇到过与之相关的问题.近期项目中遇到了下面几点需求,细致思考之后,认为採用AOP来解决.一方面是为了以更加灵活的方式来解决这个问题,还有 ...