您的位置:首页 > 运维架构 > 网站架构

网站前端_JavaScript-基础入门.0011.JavaScript正则类型

2016-09-04 17:35 861 查看
正则简介:
说明: RegExp属于引用类型,引用类型是一种数据结构,用于将数据和功能组织在一起,如var newRegExp = new RegExp(),这行代码创建了RegExp引用类型的一个新实例,保存在newRegExp中,使用的构造函数是RegExp,它只为新对象定义了默认的属性和方法.

创建正则:
模式修饰修饰说明
i忽略大小写
g全局匹配
m多行匹配
/*
* 创建正则对象
*/
//        - 第一种方式: 使用new关键字创建,支持修饰模式指定
var regExp = new RegExp('pattern')
var regExp = new RegExp('pattern', 'igm')
//        - 第二种方式: 使用//符号创建,支持修饰模式指定
var regExp = /pattern/igm


正则测试:
说明: RegExp对象测试常用.test()和.exec(),两者都是用正则表达式去匹配字符串,但前者如果匹配到则返回true,否则返回false,后者如果匹配返回匹配字符串的相关信息数组,否则返回null
var strs = 'I Love You'
// 测试 - 使用new运算符的test方法
var pattern = new RegExp('love', 'i')
if(pattern.test(strs)) console.log('匹配')
// 测试 - 使用字面量方式test方法
var pattern = /love/i
if(pattern.test(strs)) console.log('匹配')
// 测试 - 一条语句实现正则表达式匹配
if(/love/i.test(strs)) console.log('匹配')
// 测试 - 使用exec测试返回匹配信息数组
if(/love/i.test(strs)) console.log(/love/i.exec(strs))


获取控制:
说明: 正则表达式元字符是包含特殊意义的字符,它们有一些特殊功能,可以控制匹配模式的方式,反斜杠后的元字符将失去其特殊含义
元字符/元符号匹配情况
字符类:单个字符和数字
.匹配除换行符外的任意字符
[a-z0-9]匹配括号中的字符集中的任意字符
[^a-z0-9]匹配任意不在括号中的字符集中的字符
\d匹配数字
\D匹配非数字,同[^0-9]相同
\w匹配字母和数字及_
\W匹配非字母和数字及_
字符类:空白字符
\0匹配 null 字符
\b匹配空格字符
\f匹配进纸字符
\n匹配换行符
\r匹配回车字符
\t匹配制表符
\s匹配空白字,空格,制表符和换行符
\S匹配非空白字符
字符类:锚字符
^行首匹配
$行尾匹配
\A只有匹配字符串开始处
\b匹配单词边界,词在[]内时无效
\B匹配非单词边界
\G匹配当前搜索的开始位置
\Z匹配字符串结束处或行尾
\z只匹配字符串结束处
字符类:重复字符
x?匹配 0 个或 1 个 x
x*匹配 0 个或任意多个 x
x+匹配至少一个 x
(xyz)+匹配至少一个(xyz)
x{m,n}匹配最少 m 个、最多 n 个 x
字符类:替代字符
this|where|logo匹配 this 或 where 或 logo 中任意一个
字符类:记录字符
(string)用于反向引用的分组
\1 或$1匹配第一个分组中的内容
\2 或$2匹配第二个分组中的内容
\3 或$3匹配第三个分组中的内容
/*
* 使用点元字符
*/
var pattern = /g..gle/
var str = 'google'
console.log(pattern.exec(str))
/*
* 使用重复匹配
*/
var pattern = /g.*gle/
var str = 'google'
console.log(pattern.exec(str))

/*
* 使用字符类匹配
*/
var pattern = /g[a-zA-Z_]*gle/
var str = 'google'
console.log(pattern.exec(str))

var pattern = /g[^0-9]*gle/
var str = 'google'
console.log(pattern.exec(str))

var pattern = /[a-z][A-Z]+le/
var str = 'gOOGle'
console.log(pattern.exec(str))

/*
* 使用元符号匹配
*/
var pattern = /g\w*gle\d*/
var str = 'google35'
console.log(pattern.exec(str))

var pattern = /\D{6,}/
var str = 'google35'
console.log(pattern.exec(str))

/*
* 使用锚元字符匹配
*/
var pattern = /^google$/
var str = 'google'
console.log(pattern.exec(str))

var pattern = /^goo\sgle$/
var str = 'goo gle'
console.log(pattern.exec(str))

var pattern = /\bgoogle\b/
var str = 'use google happy'
console.log(pattern.exec(str))

/*
* 使用或模式匹配
*/
var pattern = /baidu|google|soso/
var str = 'google'
console.log(pattern.exec(str))

/*
* 使用分组模式匹配
*/
var pattern = /(google){3,}/
var str = 'googlegooglegooglegoogle'
console.log(pattern.exec(str))

var pattern = /8(.*)8/
var str = '8google8'
console.log(pattern.exec(str))

var pattern = /8(.*)8/
var str = '8google8'
console.log(str.replace(pattern, '<strong>$1</strong>'))

var pattern = /(.*)\s(.*)/
var str = 'baidu google'
console.log(str.replace(pattern, '$2 $1'))
贪婪模式惰性模式
++?
???
**?
{n}{n}?
{n,}{n,}?
{n,m}{n,m}?
/*
* 关于贪婪和惰性
*/
var pattern = /[a-z]+?/
var str = 'abcdefjhijklmnopqrstuvwxyz'
console.log(str.replace(pattern, 1))

var pattern = /8(.+?)8/g
var str = 'This is 8google8, That is 8google8, There is 8google8'
console.log(pattern.exec(str))

var pattern = /8[^8]*8/g
var str = 'This is 8google8, That is 8google8, There is 8google8'
console.log(pattern.exec(str))

/*
* 捕捉性分组和非捕捉性分组
*/
var pattern = /(\d+)([a-z]+)/
var str = '123abc'
console.log(pattern.exec(str))

var pattern = /(\d+)(?:[a-z]+)/
var str = '123abc'
console.log(pattern.exec(str))

/*
* 使用分组嵌套
*/
var pattern = /(A?(B?(C?)))/
var str = 'ABC'
console.log(pattern.exec(str))

/*
* 使用前瞻捕捉
*/
var pattern = /(goo(?=gle))/
var str = 'google'
console.log(pattern.exec(str))

/*
* 使用换行模式
*/
var pattern = /^\d(\.\w+)$/mg
var str = '1.baidu\n\n\n2.google\n\n\n3.soso'
console.log(str.replace(pattern, '#$1'))


其它相关:
说明: String字符串对象也提供了4个使用正则表达式的方法
对象方法方法说明
.match(pattern)返回pattern中的子串或null
.replace(pattern, replacement)用replacement替换pattern
.search(pattern)返回字符串中pattern开始位置
.split(pattern)返回字符串按照指定pattern拆分的数组
// 字符串对象匹配方法 - match,获取匹配数组
var strs = 'I Love You, i love you'
console.log(strs.match(/love/ig))
// 字符串对象匹配方法 - search,找到就返回位置,所以g修饰符无用,未找到返回-1
console.log(strs.search(/love/ig))
// 字符串对象匹配方法 - replace,替换匹配的数据
console.log(strs.replace(/love/ig, '爱'))
// 字符串对象匹配方法 - split,用匹配的数据分割字符串为数组
console.log(strs.split(/love/ig))


常用正则:
// 检查邮政编码
var pattern = /[1-9][0-9]{5}/
var str = '442700'
console.log(pattern.test(str))

// 检查文件压缩包
var pattern = /\w+\.(zip|rar|gz)/
var str = 'xmdevops-agent.zip'
console.log(pattern.test(str))

// 删除多余的空格
var pattern = /\s/g
var str = 'xx oo xx'
console.log(str.replace(pattern, ''))

// 删除首尾空格
var pattern = /^\s+/
var str = '  xx oo xx  '
console.log(str.replace(pattern, ''))
var pattern = /\s+$/
var str = '  xx oo xx  '
console.log(str.replace(pattern, ''))
var pattern = /^\s+(.+?)\s+/
var str = '  xxooxxoo  '
console.log(str.replace(pattern, '$1'))

// 电子邮件验证
var pattern = /^([a-zA-Z0-9_\.\-]+)@([a-zA-Z0-9_\.\-]+)\.([a-zA-Z]{2,4})$/;
var str = 'yc60.com@gmail.com';
alert(pattern.test(str));
var pattern = /^([\w\.\-]+)@([\w\.\-]+)\.([\w]{2,4})$/;
var str = 'yc60.com@gmail.com';
alert(pattern.test(str));
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Java Script 网站