经典JavaScript正则表达式实战

阅读更多

原文地址:http://www.cainiao8.com/web/js_note/js_regular_expression_blueidea.html

经典JavaScript正则表达式实战

 

目录

  1. 正则表达式实战...1
  2. 匹配结尾的数字...2
  3. 统一空格个数...3
  4. 判断字符串是不是由数字组成...3
  5. 电话号码正则...3
  6. 手机号码正则表达式...4
  7. 使用正则表达式实现删除字符串中的空格:...4
  8. 限制文本框只能输入数字和小数点等等...5
  9. 替换小数点前内容为指定内容...5
  10. 只匹配中文的正则表达式...5
  11. 返回字符串的中文字符个数...6
  12. 正则表达式取得匹配IP地址前三段...6
  13. 匹配
        之间的内容...7
      • 用正则表达式获得文件名...7
      • 绝对路径变相对路径...8
      • 用户名正则...8
      • 匹配英文地址...8
      • 正则匹配价格...9
      • 身份证号码的匹配...10
      • 要求文本有指定行数...10
      • 单词首字母大写...10
      • 正则验证日期格式...11
      • 去掉文件的后缀名...12
      • 验证邮箱的正则表达式...12
      • 匹配源代码中的链接...13
      • 匹配链接的文字...14
      • 正则判断标签是否闭合...14
      • 用正则获得指定标签的内容...15
      • 正则判断是否为数字与字母的混合...16
      • 空格与英文同时存在...17
      • 显示或者保存正则表达式匹配的部分内容...18
      • 正则表达式替换变量...18
      • 正则替换指定属性中的文本...19
      • 将阿拉伯数字替换为中文大写形式...20
      • 替换文本中的URL为链接...21
      • 从HTML代码段删除指定标签极其内容...21
      • 用正则给文本分段...22
      • 转换源代码中的标签...22
      • 给属性添加双引号...23
      • 给table加上tbody. 25
      • 去掉标签的所有属性...25
      • 正则替换特定单词...25
      • 指定文字高亮显示...26
      • 删除标签...27
      • 错误贴...28
      • 太难贴...28
      • 匹配数字的“正则”. 28
      • 正则资源...28

关于测试代码

本文不是使用Dreamweaver编辑,以下测试代码可能已经在赋值粘贴的过程做了一些调整,可能执行失效。可以参看本文的pdf版本。

匹配结尾的数字

来源:如何用 javascript 正则表达式 取出字符串最后一组数字,谢谢


30CAC0040 取出40
3SFASDF92 取出92

 正则如下:/\d+$/g 

统一空格个数

来源:正则匹配空格的问题

字符串内字符键有空格,但是空格的数量可能不一致,通过正则将空格的个数统一变为一个。

例如:蓝 色  理    想

变成:蓝 色 理 想

aobert的正则:

  

判断字符串是不是由数字组成

来源:有没有简单的方法判断字符串由数字组成?

这个正则比较简单,写了一个测试

  

电话号码正则

来源:想问一下关于电话号码的正则判断

:求一个验证电话号码的JS正则

 /^\d{3,4}-\d{7,8}(-\d{3,4})?$/

区号必填为3-4位的数字,区号之后用“-”与电话号码连接

 ^\d{3,4}-

电话号码为7-8位的数字

 \d{7,8}

分机号码为3-4位的数字,非必填,但若填写则以“-”与电话号码相连接

 (-\d{3,4})?

手机号码正则表达式

正则验证手机号,忽略前面的0,支持130-139,150-159。忽略前面0之后判断它是11位的。

cloeft的正则:

 /^0*(13|15)\d{9}$/ 

^0*匹配掉开头任意数量的0。

由于手机号码是13任意数字9位,和15任意数字9位,所以可以用(13|15)\d{9}匹配。

测试代码如下:

 function testReg(reg,str){ 
  return reg.test(str); 
 } 
 var reg = /^0*(13|15)\d{9}$/; 
 var str = '13889294444'; 
 var str2 = '12889293333'; 
 var str3 = '23445567'; 
 document.write(testReg(reg,str)+'
'); document.write(testReg(reg,str2)+'
'); document.write(testReg(reg,str3)+'
');

使用正则表达式实现删除字符串中的空格:

来源:请问js中有没有去掉空格的函数

代码以及测试代码如下:

  

测试的结果如下:

 length:11
 ltrim length:10
 rtrim length:10
 trim length:9 

限制文本框只能输入数字和小数点等等

来源:文本框输入限制的问题????

只能输入数字和小数点

 var reg = /^\d*\.?\d{0,2}$/ 

开头有若干个数字,中间有0个或者一个小数点,结尾有0到2个数字。

只能输入小写的英文字母和小数点,和冒号,正反斜杠(:./\)

 var reg = /[a-z\.\/\\:]+/; 

a-z包括了小写的英文字母,\.是小数点,\/和\\分别是左右反斜线,最后是冒号。整个组成一个字符集和代码任一均可,最后在加上+,1或者多个。

替换小数点前内容为指定内容

来源:求一正则表达式!

请问 怎么把这个字符串的小数点前面的字符替换为我自定义的字符串啊?
例如:infomarket.php?id=197 替换为 test.php?id=197
应该可以把第一个点“.”之前的所有单词字符替换为test就可以了。我写的正则如下:

  

原帖的有点复杂,没太看明白。

只匹配中文的正则表达式

来源:关于上传的时候,只能选择中文名称的图片(是否可以用toASCII方法呢?)

前两天看的《JavaScript开发王》里恰好有中文的unicode范围,正则如下:

 /[\u4E00-\u9FA5\uf900-\ufa2d]/ 

写了一个简单的测试,会把所有的中文替换成“哦”。

  

返回字符串的中文字符个数

来源:有没返回中文字符字节的函数!

一般的字符长度对中文和英文都是不分别的 如JS里的length,那么如何返回字符串中中文字符的个数呢?guoshuang老师在原帖中给出了解决方案,我又没看懂……

不过我自己也想到了一个办法:先去掉非中文字符,再返回length属性。函数以及测试代码如下:

  

结果:

 5
 2 

中文两个,数字三个,正确。

下面的测试也正确。

 var str = "中文123tets@#!#%$#[][{}"; 
 document.write(str.length+'
'); document.write(cLength(str));

正则表达式取得匹配IP地址前三段

来源:如何用正则取IP前3段

192.168.118.101,192.168.118.72, 192.168.118.1都替换成:192.168.118

只要匹配掉最后一段并且替换为空字符串就行了,正则如下:

 /\.\d{1,3}$/ 

匹配结尾的.n,.nn或者.nnn。

测试代码如下:

 function replaceReg(reg,str){ 
  return str.replace(reg,'') 
 } 
 var reg = /\.\d{1,3}$/; 
 var str = '192.168.118.101'; 
 var str2 = '192.168.118.72'; 
 var str3 = '192.168.118.1'; 
 document.write(replaceReg(reg,str)+'
'); document.write(replaceReg(reg,str2)+'
'); document.write(replaceReg(reg,str3)+'
');

相似的有,这个帖子里有一个验证IP地址的方法:求检验MAC地址的正则表达例子

匹配
      之间的内容

来源:请教个正则的小问题吧

    safsf
      safsf
      safsf

用正则可以得到