JavaScript学习(3)--RegExp 类(正则表达式)(3)
2017-02-24 16:07
204 查看
贪婪和惰性
1.贪婪匹配(greedy)
贪婪匹配(greedy)会匹配尽可能多的字符。它首先看整个字符串,如果不匹配,对字符串进行收缩;遇到可能匹配的文本,停止收缩,对文本进行扩展,当发现匹配的文本时,它不着急将该匹配保存到匹配集合中,而是对文本继续扩展,直到无法继续匹配或者扩展完整个字符串,然后将前面最后一个符合匹配的文本(也是最长的)保存起来到匹配集合中。所以说它是贪婪的。如下:例1:var pattern = /[a-z]+/; //使用了贪婪匹配,会替换所有能匹配的文本
var str = 'abcdefjhijklmnopqrstuvwxyz';
var result = str.replace(pattern, 'xxx'); //替换了最长的能够匹配的文本
alert(result); // xxx
例2:varpattern = /8(.+)8/g; //使用了贪婪匹配,会替换所有能匹配的文本
var str = 'This is 8google8, That is 8google8, There is 8google8';
var result = str.replace(pattern,'<strong>$1</strong>');//替换了最长的能够匹配的文本
document.write(result); // This is google8,That is 8google8, There is 8google
2. 惰性匹配(lazy)
惰性匹配(lazy)会匹配尽可能少的字符,它从第一个字符开始找起,一旦符合条件,立刻保存到匹配集合中,然后继续进行查找。所以说它是懒惰的。贪 婪 | 惰 性 |
+ | +? |
? | ?? |
* | *? |
{n} | {n}? |
{n,} | {n,}? |
{n,m} | {n,m}? |
如下:例1:var pattern = /[a-z]+?/; //?号关闭了贪婪匹配,只替换了第一个
var str = 'abcdefjhijklmnopqrstuvwxyz';
var result = str.replace(pattern, 'xxx'); //替换了第一个可以匹配的文本
alert(result); // xxxbcdefjhijklmnopqrstuvwxyz
例2:varpattern = /8(.+?)8/; //?号关闭了贪婪匹配
var str = 'This is 8google8, That is 8google8, There is 8google8';
var result = str.replace(pattern,'<strong>$1</strong>');//替换了第一个够匹配的文本
document.write(result); // This is google,That is 8google8, There is 8google8
例3:惰性匹配和全局相结合
var pattern = /8(.+?)8/g; //禁止了贪婪,开启的全局
var str = 'This is 8google8, That is 8google8, There is 8google8';
var result = str.replace(pattern,'<strong>$1</strong>');
document.write(result); // This is google,That is google, There is
常用的正则
1.检查邮政编码(共6位数字第一位不能为0)
var pattern =/[1-9][0-9]{5}/; //共 6 位数字,第一位不能为 0var str ='224000';
alert(pattern.test(str));//true
2.检查文件压缩包(也可以检测其他文件)
var pattern =/[\w]+\.zip|rar|gz/; //\d\w_表示所有数字和字母加下划线var str ='123.zip'; //\.表示匹配.,后面是一个选择
alert(pattern.test(str));//true
3.删除多余空格
var pattern =/\s/g; //g 必须全局,才能全部匹配var str = '111222 333';
var result =str.replace(pattern,''); //把空格匹配成无空格
alert(result);
4.删除首尾空格
var pattern =/^\s+/; //强制首var str = ' google ';
var result =str.replace(pattern, '');
pattern = /\s+$/;//强制尾
result =result.replace(pattern, '');
alert('|' +result + '|');
或者:var pattern = /^\s*(.+?)\s*$/; //使用了非贪婪捕获
var str = 'google ';
alert('|' +pattern.exec(str)[1] + '|');
或者:var pattern =/^\s*(.+?)\s*$/;
var str = 'google ';
alert('|' +str.replace(pattern, '$1') + '|'); //使用了分组获取
5.简单的电子邮件验证
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));//true
或者:var pattern =/^([\w\.\-]+)@([\w\.\-]+)\.([\w]{2,4})$/;
var str ='yc60.com@gmail.com';
alert(pattern.test(str));//true
或者:var reg = /^[_\.0-9a-z-]+@([0-9a-z][0-9a-z-]+\.){1,4}[a-z]{2,3}$/;
6.手机号验证
var pattern = /(^0{0,1}1[3|4|5|6|7|8|9][0-9]{9}$)/;var str = '18210553074';
alert(pattern.test(str));//true
相关文章推荐
- JavaScript学习(3)--RegExp 类(正则表达式)(2)
- 正则表达式RegExp对象的方法
- 正则表达式(Regular Expression,regex,regexp)
- javascript学习(十五)内建对象之RegExp
- RegExp正则表达式(简单入门)
- 正则表达式的语法、RegExp对象的匹配方法、String对象的匹配方法
- oracle 10支持正则表达式REGEXP_LIKE(content,'[[:digit:]]'))
- Flex RegExp正则表达式(转)
- Matlab-------regexp正则表达式
- JQuery源码分析-02正则表达式-RegExp-常用正则表达式
- javascript——正则表达式(RegExp、String)(未完工)
- RegExp正则表达式
- JavaScript学习(3)--RegExp 类(正则表达式)(1)
- REGEXP_REPLACE 和REGEXP_SUBSTR函数的用法(以及在其中如何使用正则表达式)
- javasricp RegExp 正则表达式
- 03标准对象-02-RegExp 正则表达式
- Matlab—regexp正则表达式
- 正则表达式 RegExp
- jakarta regexp (java struts正则表达式)
- 正则表达式(RegExp)