zoukankan      html  css  js  c++  java
  • 经典正则表达式 Javascript

    正则表达式  模式匹配 Javascript

    摘要:收集一些常用的正则表达式。

    正则表达式用于字符串处理,表单验证等场合,实用高效,但用到时总是不太把握,以致往往要上网查一番。我将一些常用的表达式收藏在这里,作备忘之用。本贴随时会更新。

    匹配中文字符的正则表达式: 代码
    [\u4e00-\u9fa5]


    匹配双字节字符(包括汉字在内): 代码
    [^\x00-\xff]


    应用:计算字符串的长度(一个双字节字符长度计2,ASCII字符计1) 代码
    String.prototype.len=function(){ return this.replace([^\x00-\xff]/g,"aa").length; }


    匹配空行的正则表达式: 代码
    \n[\s|]*\r


    匹配HTML标记的正则表达式: 代码
    /<(.*)>.*<\/\1>|<(.*) \/>/


    匹配首尾空格的正则表达式: 代码
    (^\s*)|(\s*$)


    应用:j avascript中没有像v bscript那样的trim函数,我们就可以利用这个表达式来实现,如下: 代码
    String.prototype.trim = function()
    {
       return this.replace(/(^\s*)|(\s*$)/g, "");
    }


    利用正则表达式分解和转换IP地址
    下面是利用正则表达式匹配IP地址,并将IP地址转换成对应数值的Javascript程序: 代码
    function IP2V(ip)
    {
        re=/(\d+)\.(\d+)\.(\d+)\.(\d+)/g  //匹配IP地址的正则表达式
        if(re.test(ip))
        {
            return RegExp.$1*Math.pow(255,3))+RegExp.$2*Math.pow(255,2))+RegExp.$3*255+RegExp.$4*1
        }
        else
        {
            throw new Error("Not a valid IP address!")
        }
    }


    不过上面的程序如果不用正则表达式,而直接用split函数来分解可能更简单,程序如下: 代码
    var ip="10.100.20.168"
    ip=ip.split(".")
    alert("IP值是:"+(ip[0]*255*255*255+ip[1]*255*255+ip[2]*255+ip[3]*1))


    匹配Email地址的正则表达式: 代码
    \w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*


    匹配网址URL的正则表达式: 代码
    http://([\w-]+\.)+[\w-]+(/[\w- ./?%&=]*)?


    利用正则表达式去除字串中重复的字符的算法程序:[*注:此程序不正确] 代码
    var s="abacabefgeeii"
    var s1=s.replace(/(.).*\1/g,"$1")
    var re=new RegExp("["+s1+"]","g")
    var s2=s.replace(re,"")
    alert(s1+s2)  //结果为:abcefgi


    *注
    ===============================
    如果var s = "abacabefggeeii"
    结果就不对了,结果为:abeicfgg
    正则表达式的能力有限
    ===============================

    我原来在CSDN上发贴寻求一个表达式来实现去除重复字符的方法,最终没有找到,这是我能想到的最简单的实现方法。思路是使用后向引用取出包括重复的字符,再以重复的字符建立第二个表达式,取到不重复的字符,两者串连。这个方法对于字符顺序有要求的字符串可能不适用。

    得用正则表达式从URL地址中提取文件名的javascript程序,如下结果为page1 代码
    s="http://blog.penner.cn/page1.htm"
    s=s.replace(/(.*\/){ 0, }([^\.]+).*/ig,"$2")
    alert(s)


    利用正则表达式限制网页表单里的文本框输入内容:

    用正则表达式限制只能输入中文: 代码
    onkeyup="value=value.replace(/[^\u4E00-\u9FA5]/g,'')" onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\u4E00-\u9FA5]/g,''))"


    用正则表达式限制只能输入全角字符: 代码
    onkeyup="value=value.replace(/[^\uFF00-\uFFFF]/g,'')" onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\uFF00-\uFFFF]/g,''))"


    用正则表达式限制只能输入数字: 代码
    onkeyup="value=value.replace(/[^\d]/g,'') "onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\d]/g,''))"


    用正则表达式限制只能输入数字和英文: 代码
    onkeyup="value=value.replace(/[\W]/g,'') "onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\d]/g,''))"


    匹配非负整数(正整数 + 0) 代码
    ^\d+$

    匹配正整数 代码
    ^[0-9]*[1-9][0-9]*$

    匹配非正整数(负整数 + 0) 代码
    ^((-\d+)|(0+))$

    匹配负整数 代码
    ^-[0-9]*[1-9][0-9]*$

    匹配整数 代码
    ^-?\d+$

    匹配非负浮点数(正浮点数 + 0) 代码
    ^\d+(\.\d+)?$

    匹配正浮点数 代码
    ^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$

    匹配非正浮点数(负浮点数 + 0) 代码
    ^((-\d+(\.\d+)?)|(0+(\.0+)?))$

    匹配负浮点数 代码
    ^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$

    匹配浮点数 代码
    ^(-?\d+)(\.\d+)?$

    匹配由26个英文字母组成的字符串 代码
    ^[A-Za-z]+$

    匹配由26个英文字母的大写组成的字符串 代码
    ^[A-Z]+$

    匹配由26个英文字母的小写组成的字符串 代码
    ^[a-z]+$

    匹配由数字和26个英文字母组成的字符串 代码
    ^[A-Za-z0-9]+$

    匹配由数字、26个英文字母或者下划线组成的字符串 代码
    ^\w+$

    匹配email地址 代码
    ^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$

    匹配url 代码
    ^[a-zA-z]+://匹配(\w+(-\w+)*)(\.(\w+(-\w+)*))*(\?\S*)?$

    匹配html tag 代码
    <\s*(\S+)(\s[^>]*)?>(.*?)<\s*\/\1\s*>
  • 相关阅读:
    Martix工作室考核题 —— 打印一个菱形
    Martix工作室考核题 —— 打印一个菱形
    Martix工作室考核题 —— 打印九九乘法表
    Martix工作室考核题 —— 打印九九乘法表
    Martix工作室考核题 —— 打印九九乘法表
    Martix工作室考核题 —— 201938 第三题
    Martix工作室考核题 —— 201938 第三题
    Martix工作室考核题 —— 201938 第三题
    Martix工作室考核题 —— 201938 第一题
    fiddler模拟发送post请求
  • 原文地址:https://www.cnblogs.com/OwenWu/p/1681242.html
Copyright © 2011-2022 走看看