您的位置:首页 > Web前端 > JavaScript

javascript正则表达式之小结

2012-09-17 15:11 302 查看
一、正则表达式简介

[javascript]
view plaincopyprint?


正则表达式(Regular Expression)本质上就是字符串,它定义了一个用来搜索匹配字符串的模式。换句话说,就是符合某种规则的表达式。在JavaScript中,其定义的模式为: /Expression/,以斜杠作为表达式的起始和终止标志。
二、在JavaScript中,正则表达式由RegExp对象引入,每一个正则表达式都是一个RegExp对象的实例。同时正则表达式可调用RegExp对象的方法进行相关操作,并将操作的结果保存在RegExp对象实例的属性中。
在JavaScript中,正则表达式的构造可以有两种方法,语法如下: 采用RegExp对象的显式构造函数构造: var regularexpression = new RegExp("pattern",["flags"]); 采用RegExp对象的隐式构造函数构造: var regularexpression = /pattern/[flags] ;
三、正则表达式的操作方法:test() 和exec()
1、test()方法是对指定的字符串执行一次测试性搜索,返回一个 Boolean值指示是否存在匹配。 其语法如下: var flag=Object.test(string str);
代码:


2、 exec()方法是利用创建的RegExp对象实例对指定的字符串执行正则表达式搜索,并返回一个包含结果的数组。 其语法如下: var array=Object.exec(string str);



3、compile()方法是更换RegExp对象实例所使用的表达式模式,其语法如下: RegExp.compile("pattern" ,[ "flags"]); 显式定义正则表达式的语法如下: Var regularexpression = new RegExp("pattern",["flags"]);

较常用的元字符:
“+”元字符规定其前导字符必须在目标对象中连续出现一次或多次;
  “*”元字符规定其前导字符必须在目标对象中出现零次或连续多次;
  “?”元字符规定其前导对象必须在目标对象中连续出现零次或一次;
s:用于匹配单个空格符,包括tab键和换行符;
  \S:用于匹配除单个空格符之外的所有字符;
  \d:用于匹配从0到9的数字;
  \w:用于匹配字母,数字或下划线字符;
  \W:用于匹配所有与\w不匹配的字符;
  . :用于匹配除换行符之外的所有字符。

元字符的具体应用:
/fo+/  因为上述正则表达式中包含“+”元字符,表示可以与目标对象中的 “fool”, “fo”, 或者 “football”等在字母f后面连续出现一个或多个字母o的字符串相匹配;  /eg*/  因为上述正则表达式中包含“*”元字符,表示可以与目标对象中的 “easy”, “ego”, 或者 “egg”等在字母e后面连续出现零个或多个字母g的字符串相匹配;  /Wil?/  因为上述正则表达式中包含“?”元字符,表示可以与目标对象中的 “Win”, 或者“Wilson”,等在字母i后面连续出现零个或一个字母l的字符串相匹配。
常用的定位符:
“^”定位符规定匹配模式必须出现在目标字符串的开头
  “$”定位符规定匹配模式必须出现在目标对象的结尾
  “\b”定位符规定匹配模式必须出现在目标字符串的开头或结尾的两个边界之一
  “\B”定位符则规定匹配对象必须位于目标字符串的开头和结尾两个边界之内,
  即匹配对象既不能作为目标字符串的开头,也不能作为目标字符串的结尾。

正则表达式允许使用者在匹配模式中指定某一个范围而不局限于具体的字符:[A-Z]/  上述正则表达式将会与从A到Z范围内任何一个大写字母相匹配。
  /[a-z]/  上述正则表达式将会与从a到z范围内任何一个小写字母相匹配。
  /[0-9]/  上述正则表达式将会与从0到9范围内任何一个数字相匹配。
  /([a-z][A-Z][0-9])+/ 上述正则表达式将会与任何由字母和数字组成的字符串,如 “aB0” 等相匹配。
校验登录名:只能输入5-20个以字母开头、可带数字、“_”、“.”的字串[html] view plaincopyprint?<SPAN style="COLOR: #ff0000">function isRegisterUserName(s) { var patrn=/^[a-zA-Z]{1}([a-zA-Z0-9]|[._]){4,19}$/; if (!patrn.exec(s))return false return true }</SPAN>
function isRegisterUserName(s)
{
var patrn=/^[a-zA-Z]{1}([a-zA-Z0-9]|[._]){4,19}$/;
if (!patrn.exec(s))return false
return true
}


校验用户姓名:只能输入1-30个以字母开头的字串

[javascript]
view plaincopyprint?

<SPAN style="COLOR: #ff0000">function isTrueName(s) { var patrn=/^[a-zA-Z]{1,30}$/; if (!patrn.exec(s))return false return true } }}</SPAN>

function isTrueName(s)
{
var patrn=/^[a-zA-Z]{1,30}$/;
if (!patrn.exec(s))return false
return true
}
}}

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

[html]
view plaincopyprint?

<SPAN style="COLOR: #ff0000"><PRE class=java name="code">function isPasswd(s) { var patrn=/^(\w){6,20}$/; if (!patrn.exec(s))return false return true } </PRE></SPAN>

<PRE class=java name="code">function isPasswd(s)
{
var patrn=/^(\w){6,20}$/;
if (!patrn.exec(s))return false
return true
}
</PRE>


正则表达式优先级:

1.\ 转义符
2.(), (?:), (?=), [] 圆括号和方括号
  3.*, +, ?, {n}, {n,}, {n,m} 限定符
 4.^, $, \anymetacharacter 位置和顺序
  5.|“或”操作
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: