您的位置:首页 > 其它

正则表达式,你值得拥有!

2016-12-24 16:17 267 查看
 正则表达式RegExp

第一种声明方法var reg=new RegExp("^[]$","ig")

第二种声明方法  var reg=/^[0-9]{6}$/i

Reg Exp(regular    expression)对象表示正则表达,他是对字符串执行模式匹配的强大工具。

用正则表达式写出要求的字符串,再在目标字符串中进行检索比较,返回true或false或字符串或数组

定义一个正则表达式;

Var reg=new RegExp (正则表达式的模式pattern ,属性 )

属性:(可以不止用一个)

g   (global)全局匹配,

I     (ignore)忽略大小写的匹配;

M   (multiline)多行匹配;文本框多行文字的时候使用

模式:

  方法:test:用于检测字符串是否符合某个模式。

步骤:1.先有个字符串,var str=”hello world”  str=”234234324” 

   2.定义正则对象,var reg=new RegExp(pattern,“g”)  pattern是个字符串   

3.用定义的正则对象去检测字符串,reg.test(str);返回值是true或false;

假设用户名只能是字母而不是数字,和特殊符号等

方括号:[ ]  表示一个范围,[a-z]  [A-Z] [0-9]表示查找方括号之间的任何字符;

所以把[a-z]  [A-Z]放到pattern的位置就好,写一块[a-zA-Z],

[^absa]:表示不是方括号里的字符。

注意双斜杠的写法和点的写法

var reg=/^(http:)["/"]{2}[a-zA-Z]*(\.)[a-zA-Z]+(\.com\.cn)$/ig;

量词:

+ :>=1

*: >=0

?: 0或者1

N{4}:大括号里的个数是指有4个n,

N{4,}:表示至少4个n,

N{4,10}:表示n的个数大于等于4小于等于10.

//验证qq号登陆   必须是纯数字 长度是6-11位

var qqnum="1243432";

var reg=new RegExp("^[1-9][0-9]{5,10}$")

^w[a-z]*rd 开头是w,中间有0个字母或者1个字母

开头和结尾的符号:

^:开头     ^[a-z]    表示开头必须是小写字母     ^n 匹配开头是n的字符

$:结尾     ^[a-z]$   表示开头和结尾必须是小写字母   n$匹配结尾是n的字符

 

.在正则中表示任意字符,要使用得先转意,方法:    (\.)

元字符

\W  :word  查找单词字符  主要就是字母数字下划线,也就是\w=[0-9a-zA-Z_]

\d  :digit  同 [0-9]是纯数字。

\s:   space   匹配空格,  配合replace可以用来把拿到的字符串前边和后边的空格都去掉(比如说密码或用户名这些东西,)

var str="   sfrew wef wee rg hgth rhw  "

   str=str.replace(/\s+/
4000
g,"");

   alert(str);

\b:边界,匹配单词的开始和结束   \b word\b   word的前后都没有东西的时候能检索到。

方法:exec:用于检测字符串是否符合某个模式,返回符合规则的字符串,如果有多个符合规则就返回数组。

返回的结果中包含index :第一次检索到符合规则的单词出现的位置,

                          Input:要检测的字符串,length:数组的长度;

var str="java is important"

var reg=/\bjava\b/;

alert(reg.exec(str))

exec():

一、(没有while循环,只能进行第一个匹配,匹配完成后如果有小括号就继续匹配他的子表达式)

找到字符串中的第一个匹配的对象就结束了,如果在正则中添加(),而且有可能多个(1,2,3,4个),每个(就称作子表达式)

步骤:

1. 默认第一次匹配正则,如果能找到就算是找到结果,结束匹配过程,这是对于没有()的,

2. 对于有()的还没有结束,系统将小括号里的内容当成是他的子表达式,所以,返回的数组中包含要检索的字符串本身和他的子表达式

3.

例:要检索的内容是(abc)(bc),在第一次匹配的时候不用考虑括号,就直接检索abcbc,找到之后因为有子表达式,所以再进行下次检索,得到abc和bc所以数组中的内容就是[abcbc,abc,bc]

二、(配合while循环进行全局匹配,如果正则中有小括号,用法同第一)

默认只匹配第一个,之后就不在往后匹配了,如果要匹配所有的对象,那就正则表达式必须是全局的也就是g,检索完之后还可以向后执行,只要执行完毕之后都是从当前位置向后继续执行,因此我们可以这么说,在循环中反复地调用 exec() 方法是唯一一种获得全局模式的完整模式匹配信息的方法。Exec返回结果是个数组,但是不能知道数组里有几个元素,要拿到整个数组就要用while循环,匹配到一个就添加到数组中(在一开始先声明一个空的数组)。并且能够返回每个元素的位置,

 

 

字符串对象和正则的搭配

以上的过程是正则调字符串,也就是reg.exec(str)

使用字符串中的match可以省去上面的循环,是字符串调正则,str.match(reg)返回结果也是数组。

Replace:replace(reg,””) 用逗号后边的替换逗号前边的内容,  

Var str=”aaabbcccdddd”;要求结果abcd,把重复的只留一个。

Var reg=/\w+/;

Str.replace(reg,”$&”);         $& 把叠词用他自己(也就是正则匹配的文本)去替换,$`:表示的是正则匹配文本左侧的文本,$’ 表示的是正则匹配文本右侧的文本

Search()类似indexof,

* 贪婪匹配: http://www.nowamagic.net/librarys/veda/detail/1037
* 懒惰匹配: http://www.nowamagic.net/librarys/veda/detail/1038
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: