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"> < ...
随机推荐
- [置顶] 64位Win2008_VS2012使用ODP.NET遭遇问题和解决办法
最近为使用Oracle11G数据库做个快速开发的小程序,使用64位Win2008+Vs2012环境,结果碰壁连环,幸好不算太笨,终于解决了,特记录一下. 测试环境: Oracle11g (11.2.0 ...
- 【cocos2d-js公文】十七、事件分发机制
简单介绍 游戏开发中一个非常重要的功能就是交互,假设没有与用户的交互.那么游戏将变成动画,而处理用户交互就须要使用事件监听器了. 总概: 事件监听器(cc.EventListener) 封装用户的事件 ...
- 通过无线连接的方式来做 Appium 自动化
感谢TesterHome里各种大牛,提出的宝贵思路,我这里只是将他们的想法综合了一下,试出来的成果,谢谢大家分享你们的智慧. 简单说下背景: 由于公司要测试APP 产品的耗电问题,我们采取的办法很lo ...
- UE4的编程C++创建一个FPSproject(两)角色网格、动画、HUD、子弹类
立即归还,本文将总结所有这些整理UE4有关角色的网络格.动画.子弹类HUD一个简单的实现. (五)角色加入网格 Character类为我们默认创建了一个SkeletaMeshComponent组件,所 ...
- VC/MFC 使edit控件不能进行粘贴操作
这里使用消息拦截的方法 BOOL PersonDlg::PreTranslateMessage(MSG* pMsg) { if (GetDlgItem(IDC_EDIT_USER_ID)->m_ ...
- iphone之NSArray比较大小
//排序 NSArray *tempArray = [[NSArray alloc]initWithArray:self.contentArray]; tempArray = [tempArray s ...
- 枚举类型互相转换(使用GetEnumName和TypeInfo两个函数)
usesClasses,TypInfo ; typeTCommandType = (ctEmptyCommand,ctAdd,ctModify); TCommandTypeConvert=classp ...
- Delphi主窗口任务栏菜单的问题(转发WM_SYSCOMMAND到Application)
Delphi的VCL框架在创建应用时TApplication是一个自动创建的隐藏窗口,其它创建的窗口是自动以该窗口为窗口,这就导致创始的主窗口在任务栏的系统菜单只有三项,只要在主窗口的Create事件 ...
- Spring MVC+JSP实现三级联动
jsp代码 <script type="text/javascript"> $(function() { initProvinces(); }); /** * 获取省列 ...
- 14.4.3.5 Configuring InnoDB Buffer Pool Flushing 配置InnoDB Buffer Pool 刷新:
14.4.3.5 Configuring InnoDB Buffer Pool Flushing 配置InnoDB Buffer Pool 刷新: InnoDB执行某些任务在后台, 包括flush 脏 ...