JS正则表达式

 

一、正则表达式的原理:

1.常用符号

/……/正则表达式的范围 如:/^\d+(\.\d)?$/

^ 表示开始字符   如:/^a /表示以a开始的字符串

$ 表示结束字符    如:/a$ /表示以a结束的字符串(注:若没有起始标识符就表示包含)

+ 表示数量>=1  如:/ab+/表示包含a后面至少一个b的字符串

* 表示数量为0或若干个 如:/ab*/表示包含a后面有0个或者若干个b的字符串

? 表示数量为0或者1个 如:/ab?/表示包含a后面有0个或者1个b的字符串

.  表示任意的字符(除了换行符(/n))     如 /^a.b$/表示以a开头以b结尾的所有字符串

{n} 表示数量是定值n如:/ab{3}/表示包含a后面有3个b的字符串

{n,}表示数量的最小值是n 如:/ab{1,}/表示包含a后面至少有1个b的字符串

{m,n}表示数量的范围最少m个最多n个 如;/ab{2,4}/表示包含a后面有2到4个b的字符串

 [] 表示含有其中一个

[^]表示不含有

i   不区分大小写  如:/a/i

g   全局匹配

m 多行匹配

 

2.特殊符号

\r,\n 回车和换行

\t   制表符

\d  表示0-9任意的数字

\w  表示任意A~Z,a~z,0~9,_ 符号

\W  除了\w之外的字符

\B  单词的边界 (其两侧都是\w ;如:12,23-red 其中 , 和 - 是 \B)

\s  包括空格、制表符、换页符等空白字符的其中任意一个

\S 所有非空白字符

二、常用方法

0. RegExp 对象 

 new RegExp(pattern,modifiers);

  pattern:正则表达式  modifiers (修饰符) 用于指定全局匹配(g)、区分大小写的匹配(i 忽略大小写)和多行匹配(m)

  注意:RegExp中正则表达式pattern参数是一个字符串,所以需要注意转义 比如 new RegExp('^\\s.*$') 等同于/'^\s.*$/

1.test

测试

  /^\d+$/.test('123')    返回true或false

2.replace

value=value.replace(/[^\d]/g,'')  只能输入数字

例1:去掉两端空字符串

       msg = msg.replace(/^\s+/, '').replace(/\s+$/, '');

例2:每四个字符自动加空格(末尾不需要空格)

   str=str.replace(/(\d{4})/g,'$1 ').replace(/\s*$/,'');
  注:replace 中使用正则表达式替换的时候,在新的字符中可以用$符号后边加上数字($1,$2...这种)的字符代表每一个子表达式匹配的字符串,注意这个符号要在引号内使用.(如果确实想用$符号作为新字符可以使用$$)
 

3.match(字符串提取)

 返回的是字符串数组(加‘g’)

var str = "12312@ww.qqw,3243423@ee.cdss,";

var reg=/\w+@\w+(\.\w+)+/g;

 str.match(reg) 

结果: ["12312@ww.qqw", "3243423@ee.cdss"]

4.exec

进行匹配查找

如果 exec() 找到了匹配的文本,则返回一个结果数组。否则,返回 null。此数组的第 0 个元素是与正则表达式相匹配的文本,第 1 个元素是与 RegExpObject 的第 1 个子表达式相匹配的文本(用小括号包裹的如果有的话),第 2 个元素是与 RegExpObject 的第 2 个子表达式相匹配的文本(如果有的话),以此类推。除了数组元素和 length 属性之外,exec() 方法还返回两个属性。index 属性声明的是匹配文本的第一个字符的位置。input 属性则存放的是被检索的字符串 string。

例如

var str = "12312@ww.qqw,3243423@ee.cdss,";

var reg=/\w+@\w+(\.\w+)+/g;

var result;

reg.exec(str)

结果:

["12312@ww.qqw", ".qqw", index: 0, input: "12312@ww.qqw,3243423@ee.cdss,", groups: undefined]

 

while(result=reg.exec(str)){

console.log(result[0])
}

结果:

12312@ww.qqw
3243423@ee.cdss

三、常用正则表达式

1.是否实数   /^(\+|-)?\d+($|\.\d+$)/.test( obj.value )

2.是否正确的邮箱  /^\w+@\w+(\.\w+)+$/

3.是否正确的邮政编码  /^[0-9]{6}$/

4.中文字符  \u4e00-\u9fa5
5.单字节字符 \x00-\xff

6.判断金额  /(^[1-9]\d*(\.\d{0,2})?$)|(^\d(\.\d{0,2})?$)/

7.手机号码  /^1\d{10}$/

8.正数浮点数  

/^(0|([1-9]\d*))(\.\d+)?$/
/^(0|([1-9]\d*))(\.|(\.\d+))?$/  (包含 0.)
posted @ 2015-09-09 09:25  少年工藤  阅读(321)  评论(0编辑  收藏  举报