码迷,mamicode.com
首页 > 编程语言 > 详细

JavaScript正则表达式-学习笔记(不定期更新)

时间:2017-05-22 13:23:56      阅读:232      评论:0      收藏:0      [点我收藏+]

标签:split   regex   学习   top   abc   cab   mat   范围   case   

JavaScript权威指南学习笔记,禁止转载!

8、正则表达式

在常见的字符串检索或替换中,我们需要提供一种模式表示检索或替换的规则。

正则表达式使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。

使用:

/\d\d\d/.test(“123”);  //true

new RegExp(“Bosn”).test(“Hi,Bosn”);  //true

正则基础:

.

任何字符(除换行符以外)

/…/.test(‘1a@’)

\d

数字0-9

/\d\d\d/.test(‘123’)

\D

非\d,即不是数字0-9的字符

/\D\D\D/.test(‘ab!’)

\w

字母a-zA-Z,数字0-9,下划线

/\w\w\w\w/.test(‘aB9_’)

\W

非\w

/\W\W\W/.test(‘@!#’)

\s

空格符、Tab、换页符、换行符

/\sabc/.test(‘ abc’)

\S

非\s

 

\t\r\n\v\f

Tab、回车、换行、垂直制表符、换页符

 

[]

字符范围

[a-z] [0-9] [A-Za-z0-9]

[^ ]

字符范围以外

[^a-z]

^

行首

^Hi

$

行尾

test$

\b

零宽单词边界

\bno匹配‘a_no’

\B

非\b

 

转义符\

匹配 . ^ $ 这些字符前加上特殊转义符 \

/\^abc/.test(‘^abc’)

()

分组

 

\n

表示使用分组符()匹配到的字符串

/(abc)\1/.test(‘abcabc’)

(?:)

仅分组

/(?:abc)(def)\1/.test(‘abcdefdef’)

x*,x+

重复0或多次,重复1或多次(贪婪算法)

abc*匹配ab,abc,abccc

abc+匹配abc,abccc

x*?,x+?

x+?:匹配x自身

非贪婪算法

abc*?在字符串abcccc中匹配ab

abc+?在字符串abcccc中匹配abc

x?

重复0或1次

 

x|y

x或y

x|y匹配x也匹配y

x{n}

x{n,}

x{n,m}

重复n次

重复>=n次

n=<重复次数<=m

x{5}匹配xxxxo

x{1,3}匹配x,xx,xxx

三个flag

global(正常匹配到一个就结束了,若需匹配到所有的情况则用global标签),

ignoreCase(不区分大小写)

multiline(可以跨行检索)

如何设置标签:

/abc/gim.test(‘ABC’);  //true

RegExp(“abc”,“mgi”) .test(‘ABC’);  //true

RegExp对象属性:global、ingoreCase、multiline、source

/abc/g.global  //true

/abc/g.ignoreCase  //false

/abc/g.multiline  //false

/abc/g.source  //“abc”正则的内容

RegExp对象方法:compile、exec、test、toString

/abc/.exec(“abcdef”); //“abc”返回用正则去匹配字符串匹配的结果

/abc/.test(“abcdef”);  //true

/abc/.toSTring();  //  “/abc/”返回正则的内容

var reg=/abc/; reg.compile(“def”);reg.test(“def”);  //true改写正则的内容

string类型与正则相关的方法

String.prototype.search 返回正则在字符串中的索引

“abcabcdef” .search(/abc\1/);  //0(索引为0)

String.prototype.replace 替换字符

“aabbbbcc”.replace(/b+?/,“1”);  // aa1bbbcc

String.prototype.match返回一个数组,数组元素是正则的内容

“aabbbbcc”.match(/b+/);   //[“bbbb”]

“aabbbbccbbaa”.match(/b+/g);   //[“bbbb”,“bb”]

String.prototype.split分割字符串,返回一个数组

“aabbbbccbbaa”.split(/b+/);  //[“aa”,“cc”,“aa”]

应用

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

/^(\w){6,20}$/

学会正则会大大提高编程效率!!!

JavaScript正则表达式-学习笔记(不定期更新)

标签:split   regex   学习   top   abc   cab   mat   范围   case   

原文地址:http://www.cnblogs.com/xuxuemin/p/6888739.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!