JavaScript RegExp 对象

来源:互联网 发布:女大童服装淘宝网 编辑:程序博客网 时间:2024/06/05 00:52

RegExp 对象用于规定在文本中检索的内容。
什么是 RegExp?
RegExp 是正则表达式的缩写。
RegExp 对象的方法
RegExp 对象有 3 个方法:test()、exec() 以及 compile()。

test()
方法检索字符串中的指定值。返回值是 true 或 false。

exec()
方法检索字符串中的指定值。返回值是被找到的值。如果没有发现匹配,则返回 null。

compile()
既可以改变检索模式,也可以添加或删除第二个参数。

var patt1=new RegExp("e");document.write(patt1.test("The best things in life are free"));//输出true
patt1.compile("d");document.write(patt1.test("The best things in life are free"));//输出false

修饰符
修饰符 描述
i 执行对大小写不敏感的匹配。
g 执行全局匹配(查找所有匹配而非在找到第一个匹配后停止)。
m 执行多行匹配。

元字符(Metacharacter)是拥有特殊含义的字符:

 .     查找单个字符,除了换行和行结束符。\w查找单词字符。\W查找非单词字符。\d查找数字。\D查找非数字字符。\s查找空白字符。\S查找非空白字符。\b匹配单词边界。\B匹配非单词边界。\0查找 NUL 字符。\n查找换行符。\f查找换页符。\r查找回车符。\t查找制表符。\v查找垂直制表符。\xxx查找以八进制数 xxx 规定的字符。\xdd查找以十六进制数 dd 规定的字符。\uxxxx查找以十六进制数 xxxx 规定的 Unicode 字符。
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 的字符串。search() 方法用于检索字符串中指定的子字符串,或检索与正则表达式相匹配的子字符串。 如果没有找到任何匹配的子串,则返回 -1
var str="Visit W3School!"document.write(str.search(/W3School/))

输出:
6

match() 方法可在字符串内检索指定的值,或找到一个或多个正则表达式的匹配。
var str="1 plus 2 equal 3"document.write(str.match(/\d+/g))

输出:
1,2,3

replace() 方法用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串。
var str="Visit Microsoft!"document.write(str.replace(/Microsoft/, "W3School"))

输出:
Visit W3School!

var str="Welcome to Microsoft! "str=str + "We are proud to announce that Microsoft has "str=str + "one of the largest Web Developers sites in the world."document.write(str.replace(/Microsoft/g, "W3School"))

输出:
Welcome to W3School! We are proud to announce that W3School
has one of the largest Web Developers sites in the world.

在本例中,我们将把字符串中所有单词的首字母都转换为大写:
name = ‘aaa bbb ccc’;
uw=name.replace(/\b\w+\b/g, function(word){
return word.substring(0,1).toUpperCase()+word.substring(1);}
);

下面附上一些使用的提示

字符集
ISO-8859-1,包含英文字符和计算常用的字符,一共有127个字符

GB2312,包含ISO-8859-1的所有字符和一些常用的中文字符,不包含生僻字

GBK,GB2312的扩展,包含了更多的汉字和生僻字
BIG5,繁体汉字

UNICODE,目标实现能够显示地球上所有文字,包含UTF-8,UTF-16….

[] 中括号可以写需要查找的数据范围

[0-9] 查找是否包含有0到9的数字

[a-zA-Z] 查找是否包含大写和小写的英文字母

[\u4E00-\u9FA5\uF900-\uFA2D] 查找是否包含中日韩文字

[aeiou] 查找是否包含有aeiou这5个字符

转义
\d 表示0~9的数字

\w 表示字符a-zA-Z

\s 空格、换行等空白符号(打印看不到内容的那些符号)

[] 中括号可以写需要查找的数据范围

[0-9] 查找是否包含有0到9的数字

[a-zA-Z] 查找是否包含大写和小写的英文字母

[\u4E00-\u9FA5\uF900-\uFA2D] 查找是否包含中日韩文字

[aeiou] 查找是否包含有aeiou这5个字符

转义
\d 表示0~9的数字

\w 表示字符,包含a-zA-Z还有数字

\s 空格、换行等空白符号(打印看不到内容的那些符号)

\D 不是数字的其它字符

\W 除a-zA-Z以外的字符

\S 除空格之类的符号

\D 不是数字的其它字符

\W 除a-zA-Z以外的字符

\S 除空格之类的符号

/[hH]/ 查找大小写的h,不方便

/h/i i表示是怱略大小写,i是ignore的缩写

/h/g g表示是字符串里的所有字符h,g是global的缩写

^ 元字符(shift+6),它有两个作用:1. [^a-zA-Z]:不是a-zA-Z这些字符以外的其他字符,2.写在正则的最前面表示必须以^字符后的内容做为开始的条件

$ 写在正则表达式的最后,表示以什么内容结束

| 或的意思,(a|b){3,4} a或b会出现3~4次

. 表示任意一个字符

\ 是转义符号,把有特殊意义的字符转换为文本字符,例如.

/ 表示是一个正则表达式,可以表示表达式的开始或结束

限定出现次数
[a]{n, m} 限定字符a出现的次数

[a]{3,} a需要连续出现3次或以上才会被搜索到

[a]{3,6} a需要连续出现3或最多6次才会被搜索到

[a]{3} a必须是连续出现3才会被搜索到

[a]? 表示a会出现0或1次

a+ 表示a会出现1或多次

a* 表工会出现0或多次

和正则表达式配合使用的函数
search 查找出现位置,-1表示查找不到,string.seach(正则)

match 获取查找到的数据,string.match(正则)

replace 替换查找到的内容,string.replace(正则, 新的内容)

test 使用正则检查字符串内容是否匹配,/abc/.test(字符串),如果匹配返回true否则返回false

var reg = /^[a-zA-Z0-9]\w*@\w+\.\w{2,3}(\.\w{2})?$/;邮箱验证正则
// 包含中文的邮箱        var reg = /^[a-zA-Z0-9\u4E00-\u9FA5\uF900-\uFA2D][\w\u4E00-\u9FA5\uF900-\uFA2D]*@\w+\.\w{2,3}(\.\w{2})?$/;
//手机验证var userRegt=/^1[3458]\d{9}$/;
   // 这是密码验证  var passReg = /^\w{6,12}$/; 
qq验证var oQQReg=/[1-9]\d{4,9}/;
原创粉丝点击