站客吧 关注:4贴子:78
  • 14回复贴,共1

javascript常用正则表达式连载

只看楼主收藏回复

所有规则均为网上收集 如有错误请纠正
1 取出字符串最后一组数字 匹配结尾的数字

30CAC0040 取出40
3SFASDF92 取出92
正则如下:/\d+$/g


IP属地:四川1楼2014-04-16 01:00回复
    4.电话号码正则
    /^\d{3,4}-\d{7,8}(-\d{3,4})?$/
    区号必填为3-4位的数字,区号之后用“-”与电话号码连接
    ^\d{3,4}-
    电话号码为7-8位的数字
    \d{7,8}
    分机号码为3-4位的数字,非必填,但若填写则以“-”与电话号码相连接
    (-\d{3,4})?
    5. 手机号码正则表达式
    正则验证手机号,忽略前面的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)+'<br />');
    document.write(testReg(reg,str2)+'<br />');
    document.write(testReg(reg,str3)+'<br />');


    IP属地:四川3楼2014-04-16 01:04
    回复
      7. 限制文本框只能输入数字和小数点等等
      只能输入数字和小数点
      var reg = /^\d*\.?\d{0,2}$/
      开头有若干个数字,中间有0个或者一个小数点,结尾有0到2个数字。
      只能输入小写的英文字母和小数点,和冒号,正反斜杠(:./\)
      var reg = /[a-z\.\/\\:]+/;
      a-z包括了小写的英文字母,\.是小数点,\/和\\分别是左右反斜线,最后是冒号。整个组成一个字符集和代码任一均可,最后在加上+,1或者多个。


      IP属地:四川5楼2014-04-16 01:06
      回复
        替换小数点前内容为指定内
        请问 怎么把这个字符串的小数点前面的字符替换为我自定义的字符串啊?
        例如:infomarket.php?id=197 替换为 test.php?id=197
        应该可以把第一个点“.”之前的所有单词字符替换为test就可以了。我写的正则如下:
        <script type="text/javascript"> var str = "infomarket.php?id=197"; var reg = /^\w*/ig; //匹配字符串开头的任意个单词字符 str = str.replace(reg,'test'); document.write(str); </script>
        原帖的有点复杂,没太看明白。
        只匹配中文的正则表达式
        前两天看的《JavaScript开发王》里恰好有中文的unicode范围,正则如下:
        /[\u4E00-\u9FA5\uf900-\ufa2d]/
        写了一个简单的测试,会把所有的中文替换成“哦”。
        <script type="text/javascript"> var str = "有中文?and English."; var reg = /[\u4E00-\u9FA5\uf900-\ufa2d]/ig; str = str.replace(reg,'哦'); document.write(str); </script>


        IP属地:四川7楼2014-04-21 22:33
        回复
          返回字符串的中文字符个数
          来源:有没返回中文字符字节的函数!
          一般的字符长度对中文和英文都是不分别的 如JS里的length,那么如何返回字符串中中文字符的个数呢?guoshuang老师在原帖中给出了解决方案,我又没看懂……
          不过我自己也想到了一个办法:先去掉非中文字符,再返回length属性。函数以及测试代码如下:
          <script type="text/javascript">
          function cLength(str){
          var reg = /[^\u4E00-\u9FA5\uf900-\ufa2d]/g; //匹配非中文的正则表达式
          var temp = str.replace(reg,'');
          return temp.length; }
          var str = "中文123";
          document.write(str.length+'<br />');
          document.write(cLength(str));
          </script>
          结果:
          5 2
          中文两个,数字三个,正确。
          下面的测试也正确。
          var str = "中文123tets@#!#%$#[][{}";
          document.write(str.length+'<br />');
          document.write(cLength(str));


          IP属地:四川8楼2014-04-21 22:34
          回复
            正则表达式取得匹配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)+'<br />');
            document.write(replaceReg(reg,str2)+'<br />');
            document.write(replaceReg(reg,str3)+'<br />');
            相似的有,这个帖子里有一个验证IP地址的方法:求检验MAC地址的正则表达例子


            IP属地:四川9楼2014-04-21 22:34
            回复
              用正则表达式获得文件名
              c:\images\tupian\006.jpg
              可能是直接在盘符根目录下,也可能在好几层目录下,要求替换到只剩文件名。
              xlez的正则如下:
              /[^\\\/]*[\\\/]+/g
              首先匹配非左右斜线字符0或多个,然后是左右斜线一个或者多个。形如“xxx/”或者“xxx\”或者“/”或者“\”
              函数以及测试代码:
              <script type="text/javascript">
              function getFileName(str){
              var reg = /[^\\\/]*[\\\/]+/g;
              //xxx\或者是xxx/ str = str.replace(reg,'');
              return str;
              }
              var str = "c:\\images\\tupian\\006.jpg";
              document.write(getFileName(str)+'<br />');
              var str2 = "c:/images/tupian/test2.jpg";
              document.write(getFileName(str2));
              </script>
              注意,\需要转义。


              IP属地:四川11楼2014-04-21 22:35
              回复
                用户名正则
                来源:求正则,急急呀!!
                用于用户名注册,,用户名只 能用 中文、英文、数字、下划线、4-16个字符。
                hansir和解决方案弄成正则:
                /^[\u4E00-\u9FA5\uf900-\ufa2d\w]{4,16}$/
                中文字符或者单词字符,4到16个。实现4到16结成到正则里的关键就是开始^和结束$,这就等于整个字符串只能有这些匹配的内容,不能有多余的。
                函数和测试代码如下:
                <script type="text/javascript">
                function isEmail(str){
                var reg = /^[\u4E00-\u9FA5\uf900-\ufa2d\w]{4,16}$/;
                return reg.test(str); }
                var str = '超级无敌用户名regExp';
                var str2 = '捣乱的@';
                var str3 = '太短'
                var str4 = '太长longlonglonglonglonglonglonglong'
                document.write(isEmail(str)+'<br />');
                document.write(isEmail(str2)+'<br />');
                document.write(isEmail(str3)+'<br />');
                document.write(isEmail(str4)+'<br />');
                </script>


                IP属地:四川12楼2014-04-21 22:37
                回复
                  匹配英文地址
                  来源:-求助- 正则问题
                  规则如下:
                  包含 "点", "字母","空格","逗号","数字",但开头和结尾不能是除字母外任何字符。
                  [\.a-zA-Z\s,0-9]这个字符集就实现了字母,空格,逗号和数字。最终正则如下:
                  /^[a-zA-Z][\.a-zA-Z\s,0-9]*?[a-zA-Z]+$/
                  开头必须有字母,结束也必须是一个以上字母。测试代码如下:
                  <script type="text/javascript">
                  function testReg(reg,str){
                  return reg.test(str); }
                  var reg = /^[a-zA-Z][\.a-zA-Z\s,0-9]*?[a-zA-Z]+$/;
                  var str = 'No.8,ChangAn Street,BeiJing,China';
                  var str2 = '8.No,ChangAn Street,BeiJing,China';
                  var str3 = 'No.8,ChangAn Street,BeiJing,China88';
                  document.write(testReg(reg,str)+'<br />')
                  document.write(testReg(reg,str2)+'<br />')
                  document.write(testReg(reg,str3)+'<br />')
                  </script>


                  IP属地:四川13楼2014-04-21 22:38
                  回复
                    正则匹配价格
                    价格的格式应该如下:
                    开头数字若干位,可能有一个小数点,小数点后面可以有两位数字。hansir给出的对应正则如下:
                    /^(\d*\.\d{0,2}|\d+).*$/
                    hansir给出的测试代码如下:
                    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
                    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
                    <html xmlns="http://www.w3.org/1999/xhtml">
                    <head>
                    <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
                    <title>无标题文档</title>
                    <script type="text/javascript">
                    function checkPrice(me){
                    if(!(/^(?:\d+|\d+\.\d{0,2})$/.test(me.value))){
                    me.value = me.value.replace(/^(\d*\.\d{0,2}|\d+).*$/,'$1');
                    } }
                    </script>
                    </head>
                    <body>
                    <input type="text" onkeyup="checkPrice(this);"/>
                    </body>
                    </html>


                    IP属地:四川14楼2014-04-21 22:39
                    回复
                      身份证号码的匹配
                      身份证号码可以是15位或者是18位,其中最后一位可以是X。其它全是数字,正则如下:
                      /^(\d{14}|\d{17})(\d|[xX])$/
                      开头是14位或者17位数字,结尾可以是数字或者是x或者是X。
                      测试代码如下:
                      <script type="text/javascript">
                      function testReg(reg,str){
                      return reg.test(str); }
                      var reg = /^(\d{14}|\d{17})(\d|[xX])$/;
                      var str = '123456789012345';//15位
                      var str2 = '123456789012345678';//18位
                      var str3 = '12345678901234567X';//最后一位是X
                      var str4 = '1234';//位数不对
                      document.write(testReg(reg,str)+'<br />');
                      document.write(testReg(reg,str2)+'<br />');
                      document.write(testReg(reg,str3)+'<br />');
                      document.write(testReg(reg,str4)+'<br />');
                      </script>


                      IP属地:四川15楼2014-04-21 22:40
                      回复
                        单词首字母大写
                        每单词首字大写,其他小写。如blue idea转换为Blue Idea,BLUE IDEA也转换为Blue Idea
                        cloeft的正则:
                        /\b(\w)|\s(\w)/g
                        所谓“首字母”包括两种情况:第一种是边界(开头)的单词字符,一种是空格之后的新单词的第一个字母。测试代码如下:
                        <script type="text/javascript">
                        function replaceReg(reg,str){
                        str = str.toLowerCase();
                        return str.replace(reg,function(m){return m.toUpperCase()}) }
                        var reg = /\b(\w)|\s(\w)/g;
                        var str = 'blue idea';
                        var str2 = 'BLUE IDEA';
                        var str3 = 'Test \n str is no good!';
                        var str4 = 'final test';
                        document.write(replaceReg(reg,str)+'<br />');
                        document.write(replaceReg(reg,str2)+'<br />');
                        document.write(replaceReg(reg,str3)+'<br />');
                        document.write(replaceReg(reg,str4)+'<br />');
                        </script>


                        IP属地:四川17楼2014-04-21 22:40
                        回复
                          正则验证日期格式
                          yyyy-mm-dd格式
                          正则如下:
                          /^\d{4}-\d{1,2}-\d{1,2}$/
                          4位数字,横线,1或者2位数字,再横线,最后又是1或者2位数字。
                          测试代码如下:
                          <script type="text/javascript">
                          function testReg(reg,str){
                          return reg.test(str); }
                          var reg = /^\d{4}-\d{1,2}-\d{1,2}$/;
                          var str = '2008-8-8'; var str2 = '2008-08-08';
                          var str3 = '08-08-2008';
                          var str4 = '2008 08 08';
                          document.write(testReg(reg,str)+'<br />');
                          document.write(testReg(reg,str2)+'<br />');
                          document.write(testReg(reg,str3)+'<br />');
                          document.write(testReg(reg,str4)+'<br />');
                          </script>
                          第二种格式:来源:求一正则表达式
                          yyyy-mm-dd

                          yyyy/mm/dd
                          用“或”简单地修改一下就行了。
                          /^\d{4}(-|\/)\d{1,2}(-|\/)\d{1,2}$/


                          IP属地:四川18楼2014-04-21 22:41
                          回复
                            去掉文件的后缀名
                            来源:求一个正则
                            www.abc.com/dc/fda.asp变为www.abc.com/dc/fda
                            如果文件后缀已知的话这个问题就非常简单了,正则如下:
                            /\.asp$/
                            匹配最后的.asp而已,测试代码如下:
                            <script type="text/javascript"> function delAspExtension(str){ var reg = /\.asp$/; return str.replace(reg,''); } var str = 'www.abc.com/dc/fda.asp'; document.write(delAspExtension(str)+'<br />'); </script>
                            如果文件名未知的话就用这个正则:/\.\w+$/,测试代码如下:
                            <script type="text/javascript">
                            function delExtension(str){
                            var reg = /\.\w+$/; return str.replace(reg,''); }
                            var str = 'example.com/dc/fda.asp';
                            document.write(delExtension(str)+'<br />');
                            var str2 = 'test/regular/fda.do';
                            document.write(delExtension(str2)+'<br />');
                            var str3 = 'example.com/dc/fda.strange_extension';
                            document.write(delExtension(str3)+'<br />');
                            </script>


                            IP属地:四川19楼2014-04-21 22:42
                            回复
                              验证邮箱的正则表达式
                              来源:找javascript写的表单检查代码!
                              fuchangxi的正则:
                              /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(\.[a-zA-Z0-9_-])+/
                              开始必须是一个或者多个单词字符或者是-,加上@,然后又是一个或者多个单词字符或者是-。然后是点“.”和单词字符和-的组合,可以有一个或者多个组合。
                              <script type="text/javascript">
                              function isEmail(str){
                              var reg = /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(\.[a-zA-Z0-9_-])+/;
                              return reg.test(str);
                              }
                              var str = 'test@hotmail.com';
                              document.write(isEmail(str)+'<br />');
                              var str2 = 'test@sima.vip.com';
                              document.write(isEmail(str2)+'<br />');
                              var str3 = 'te-st@qq.com.cn';
                              document.write(isEmail(str3)+'<br />');
                              var str4 = 'te_st@sima.vip.com';
                              document.write(isEmail(str4)+'<br />');
                              var str5 = 'te.._st@sima.vip.com';
                              document.write(isEmail(str5)+'<br />');
                              </script>
                              我不太了解邮箱的具体规则。感觉这个正则比较简单,EMAIL校验 正则 讨论 求解里有比较详细的邮箱正则讨论。


                              IP属地:四川20楼2014-04-21 22:43
                              回复