js-正则表达式

  • 时间:2018-06-06 01:50 作者:web翎云阁 来源:web翎云阁 阅读:174
  • 扫一扫,手机访问
摘要:正则表达式正则的教程很多,小编本着让大家浅显易懂的学习,以最简单的方式详情正则表达式,不喜勿喷。元字符(断言). 匹配除换行符以外的任意字符\w 匹配字母或者数字或者下划线或者汉字\s 匹配一个空白字符,包括空格、制表符、换页符和换行符。\d 匹配数字\b 匹配单词的开始或者结束^ 匹配字符串的开始

js-正则表达式

正则表达式

正则的教程很多,小编本着让大家浅显易懂的学习,以最简单的方式详情正则表达式,不喜勿喷。


元字符(断言)

. 匹配除换行符以外的任意字符

\w 匹配字母或者数字或者下划线或者汉字

\s 匹配一个空白字符,包括空格、制表符、换页符和换行符。

\d 匹配数字

\b 匹配单词的开始或者结束

^ 匹配字符串的开始

$ 匹配字符串的结束

\n 匹配一个换行符

\r 匹配一个回车符

\0nn ASCII 代码中八进制代码为nn的字符

\\xnn ASCII 代码中十六进制代码为nn的字符

\\unnnn Unicode 代码中十六进制代码为 nnnn 的字符 [\\u4e00-\\u9fa5]

假如我们要查找元字符本身需要加上 \ 转义,如:\*\\w

重复

* 重复零次或者更屡次

+ 重复一次或者更屡次

? 重复零次或者一次

{n} 重复 n 次

{n,} 重复 n 次或者更屡次

{n,m} 重复 n 到 m 次

字符类

[a-zA-Z]

[\w]

[0-9]

分枝条件

| 或者 注意:abc|eba

分组

(\d{1,3}){3}

反义

\W 匹配任意不是字母,数字,下划线,汉字的字符

\S 匹配任意不是空白符的字符

\D 匹配任意非数字的字符

\B 匹配不是单词开头或者结束的位置

[^x] 匹配除了 x 以外的任意字符

[^aeiou] 匹配除了 aeiou 这几个字母以外的任意字符

操练

0\d{2}-\d{8}

(?0\d{2})?[- ]?\d{8}|0\d{2}[- ]?\d{8}

((2[0-4]\d|25[0-5]|[01]?\d\d?).){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)

/(?\d{3})?([-\/.])\d{3}\1\d{4}/

反向引使用

\n

命名分组

(?P...)

例子:

<([^>]+)>[\s\S]*?

非捕获分组

(?:...)

例子:

(?:\d{4})-(\d{2})-(\d{2})

环视(零宽断言)

(?=...) 一定顺序环视(向右)

(?!...) 否定顺序环视(向右)

(?<=..) 一定逆序环视 (向左) Javascript 不支持

(? 否定逆序环视 (向左) Javascript 不支持

例子:

(<(?!/))(<[^/]) 区别

1(?=\d{3})

贪婪与懒惰

*? 尽可可以少的匹配

(...)+?

其它

匹配模式

i 不区分大小写

g 全局查找, 不是找到第一个就中止

m 多行模式

优化级

()

*?+

abc

a|bc


Javascript 中的正则 API

正则对象

new RegExp(pattern [, flags]) 好处是能用字符串拼接

new RegExp("abc|" + foo)

/\d+/igm 字面量

注意:RegExp 这个对象保存了少量匹配对象的状态信息

source 表达式的文本形式

global 能否指定的全局模式

ignoreCase 能否标示不区分大小写模式

multiline 能否指定了多行模式

lastIndex 假如用全局模式,变量保存的是在字符串中尝试下次匹配的偏移值

exec 方法使用于检索字符串中的正则表达式的匹配。

返回一个数组,其中存放匹配的结果。假如未找到匹配,则返回值为 null。

var pattern = /\d{4}-\d{2}-\d{2}/;

var str = '2010-12-20 2011-02-14';

if((matchArray = pattern.exec(str)) != null){

console.log(matchArray)

// ["2010-12-20", index: 0, input: "2010-12-20 2011-02-14"]

}

var pattern = /\d{4}-\d{2}-\d{2}/g;

var str = '2010-12-20 2011-02-14';

while((matchArray = pattern.exec(str)) != null){

console.log(matchArray[0], matchArray.index, matchArray.lastIndex)

// "2010-12-20" 0 10

// "2011-02-14" 11 21

}

test

在测试正则表达式可以否匹配文本,反正布尔值

小心那个 lastIndex

var pattern = /^\d{4}-\d{2}-\d{2}$/g;

pattern.test("2010-12-20"); // true

pattern.test("2010-12-20"); // false

string.match(RegExp);

相似与 RegExp.exec(string) , 唯一区别是无论能否指定全局模式, Regexp.exec() 总是返回单次的匹配结果,而 string.match() 在这种情况下会返回一个字符串数组,包含各次成功匹配结果。

string.search(RegExp)

返回正则表达式在字符串中第一次匹配的位置,不成功返回 -1

string.replace(RegExp, replacement)

默认情况下它只替换一次,要设置全局模式

replacement //字符中有少量特殊变量

$num //表示对应捕获分组匹配的文本

$$ //$字符

$` //匹配文本之前(左侧)的文本

$' //匹配文本之后(右侧)的文本

string.replace(RegExp, function)

function 接收一个字符串,也返回一个字符串

"one two three".replace(/\bt[a-zA-Z]+\b/g, function(m){

return m.toUpperCase()

})

// one TWO THREE

string.split(RegExp)

用正则来切分字符串,全局模式不影响它

var matchArray = "one two three".split(/\s+/)

关注 web翎云阁,定时推送,互动精彩多,若你有更好的见地,欢迎留言讨论!

  • 全部评论(0)
最新发布的资讯信息
【系统环境|服务器应用】前台开发入门到实战:HTML5语义化元素你真的用的正确吗?(2019-08-22 04:16)
【系统环境|服务器应用】Vue仿微信app页面跳转动画(2019-08-22 04:16)
【系统环境|服务器应用】webstorm使用快捷键快速修正单个文件的style(2019-08-22 04:16)
【系统环境|服务器应用】程序员从学生到阿里经历的5次蜕变:海阔凭鱼跃,天高任鸟飞(2019-08-22 04:16)
【系统环境|服务器应用】var、let、const的区别(2019-08-22 04:16)
【系统环境|服务器应用】mini-ui加载框Indicator 被遮挡问题(2019-08-22 04:15)
【系统环境|服务器应用】【对讲机的那点事】玩对讲机,对于对讲机的亚音你理解吗?(2019-08-22 04:15)
【系统环境|服务器应用】前台中高级面试,内功心法(上)(2019-08-22 04:15)
【系统环境|服务器应用】17、改进轮播图之功能封装(2019-08-22 04:15)
【系统环境|服务器应用】第10题- 你不知道的delete操作符(2019-08-22 04:15)