JavaScript Regular Expressions

1,949 views
1,865 views

Published on

JavaScript Regular Expressions

Published in: Education
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,949
On SlideShare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
10
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

JavaScript Regular Expressions

  1. 1. Java Script 正则表达式 张军
  2. 2. 使用方法 <ul><li>创建对象 </li></ul><ul><li>var r = new RegExp(&quot; 表达式 &quot;); </li></ul><ul><li>直接量 </li></ul><ul><li>var r = / 表达式 /; </li></ul>
  3. 3. 修饰符 <ul><li>i 执行对大小写不敏感的匹配。 </li></ul><ul><li>g 执行全局匹配(查找所有匹配而非在找到第一个匹配后停止)。 </li></ul><ul><li>m 执行多行匹配。 </li></ul>var str = &quot;taobao UED&quot;; var test = /ued/i; // var test = new RegExp(&quot;ued&quot;, &quot;i&quot;); alert(str.match(test));
  4. 4. RegExp 属性 <ul><li>global RegExp 对象是否具有标志 g 。 </li></ul><ul><li>ignoreCase RegExp 对象是否具有标志 i 。 </li></ul><ul><li>lastIndex 一个整数,标示开始下一次匹配的字符位置。 </li></ul><ul><li>multiline RegExp 对象是否具有标志 m 。 </li></ul><ul><li>source 正则表达式的源文本。 </li></ul>
  5. 5. lastIndex <ul><li>var r = /d/g; </li></ul><ul><li>alert(r.test('abc1')); </li></ul><ul><li>alert(r.lastIndex); </li></ul><ul><li>alert(r.test('ab1')); </li></ul><ul><li>alert(r.lastIndex); </li></ul><ul><li>alert(r.test('a1')); </li></ul><ul><li>alert(r.lastIndex); </li></ul>//true //4 //false //0 //true //2 一个正则表达式实例多次 test 或 exec 时,它的 lastIndex 将每一次都被更改。 不具有标志 g 和不表示全局模式的 RegExp 对象不能使用 lastIndex 属性
  6. 6. 常用元字符 <ul><li>. 匹配除换行符以外的任意字符 </li></ul><ul><li>w 匹配字母或数字或下划线或汉字 </li></ul><ul><li>s 匹配任意的空白符 </li></ul><ul><li>d 匹配数字 </li></ul><ul><li>b 匹配单词的开始或结束 </li></ul><ul><li>^ 匹配字符串的开始 </li></ul><ul><li>$ 匹配字符串的结束 </li></ul>
  7. 7. RegExp 方法 <ul><li>compile 编译正则表达式。 </li></ul><ul><li>exec 检索字符串中指定的值。返回找到的值,并确定其位置。 </li></ul><ul><li>test 检索字符串中指定的值。返回 true 或 false 。 </li></ul>
  8. 8. Exec 的使用 <ul><li>var str = &quot;taobao UED, taobao mobile UED.&quot;; </li></ul><ul><li>var text = new RegExp(&quot;UED&quot;,&quot;g&quot;); </li></ul><ul><li>var result; </li></ul><ul><li>while ((result = text.exec(str)) != null) { </li></ul><ul><li>alert(result); </li></ul><ul><li>alert (text.lastIndex); </li></ul><ul><li>} </li></ul>//UED //10 //UED //29 exec() 返回一个数组,其中存放匹配的结果。如果未找到匹配,则返回值为 null 。
  9. 9. 支 RegExp 的 String 对象的方法 <ul><li>search 检索与正则表达式相匹配的值。 </li></ul><ul><li>match 找到一个或多个正则表达式的匹配。 </li></ul><ul><li>replace 替换与正则表达式匹配的子串。 </li></ul><ul><li>split 把字符串分割为字符串数组。 </li></ul>
  10. 10. Match 的使用 <ul><li>检索一个字符串 </li></ul><ul><ul><li>var a = '20663:29447'; </li></ul></ul><ul><ul><li>var b = ':'; </li></ul></ul><ul><ul><li>if(a.match(b)){ </li></ul></ul><ul><ul><li>alert(true); </li></ul></ul><ul><ul><li>} </li></ul></ul><ul><li>检索一个正则表达式的匹配 </li></ul><ul><ul><li>var a = '20663:29447:123123'; </li></ul></ul><ul><ul><li>if(a.match(/:+/g)){ </li></ul></ul><ul><ul><li>alert(true); </li></ul></ul><ul><ul><li>} </li></ul></ul>
  11. 11. 限定符 <ul><li>? 出现 0 次或 1 次 </li></ul><ul><li>* 出现 0 次或多次 </li></ul><ul><li>+ 出现 1 次或多次 </li></ul><ul><li>{n} 一定出现 n 次 </li></ul><ul><li>{n,m} 至少出现 n 次,最多出现 m 次 </li></ul><ul><li>{n,} 至少出现 n 次 </li></ul>
  12. 12. 如何 匹配元字符 ? <ul><li>使用转义符 “ ” </li></ul><ul><li>eg </li></ul><ul><ul><li>var str=&quot;c*&quot;; </li></ul></ul><ul><ul><li>var patt1=/c*/g; </li></ul></ul><ul><ul><li>document.write(str.match(patt1)); </li></ul></ul>
  13. 13. 控制文本框输入价格 <ul><li>$('#J_FilterPrice input').keyup(function(){ </li></ul><ul><li>var _val =$(this).val(); </li></ul><ul><li>if(!/^d+.?d*$/.test(_val)){ </li></ul><ul><li>_val = parseFloat(_val) </li></ul><ul><ul><ul><ul><li>$(this).val(isNaN(_val) ? '' : _val); </li></ul></ul></ul></ul><ul><li>} </li></ul><ul><li>}); </li></ul>
  14. 14. 贪婪与非贪婪限定符 <ul><li>贪婪 匹配: </li></ul><ul><li>? </li></ul><ul><li>* </li></ul><ul><li>+ </li></ul><ul><li>{n} </li></ul><ul><li>{n,m} </li></ul><ul><li>{n,} </li></ul><ul><li>非 贪婪 匹配: </li></ul><ul><li>?? </li></ul><ul><li>*? </li></ul><ul><li>+? </li></ul><ul><li>{n}? </li></ul><ul><li>{n,m}? </li></ul><ul><li>{n,}? </li></ul>
  15. 15. 贪婪与非贪婪的匹配过程 <ul><li>var s = 'http://www/hello/world.php'; </li></ul><ul><li>var r1 = /.*//g; </li></ul><ul><li>var r2 = /.*?//g; </li></ul><ul><li>alert(s.match(r1)); </li></ul><ul><li>alert(s.match(r2)); </li></ul>// 非贪婪匹配 从第一个字符开始匹配 如果失败,读入下一个字符继续 http:/, /, www/, hello/ // 贪婪匹配 匹配整个字符串 从后逐一舍去最后一个字符继续 http://www/hello/
  16. 16. Thank you !

×