【JavaScript】正则表达式的应用

两种写法

    //var re = new RegExp('a') //js风格
    var re = /a/ //perl风格
    var str = 'abcdef'
    alert(str.search(re))

忽略大小写 i

var re = new RegExp('a', 'i') //js风格
var re = /b/i //perl风格

 实例:挑出字符串里的数字

    var str = '33 uu8798 i09 ij--879pp 99'
    alert(str.match(/\d+/g))

\d 是代表的是 数字; + 量词表示任意个数; g global,全部都找到。

replace

    var re = /a/g
    str = 'abcdabcda'
    alert(str.replace(re, '0'))

实例:敏感词过滤

<body>
    <input type="text" id="txt1">
    <input type="button" id="btn" value="过滤">
    <script>
        var oTxt = document.getElementById('txt1')
        var oBtn = document.getElementById('btn')
        oBtn.onclick = function(){
            var re = /日本|中国/g //过滤词不需要加引号
            oTxt.value = oTxt.value.replace(re, '***')
        }
    </script>
</body>

方括号 [ ]

表示或者

    var str = 'apc bpc cpc xpc gpc'
    var re = /[agp]pc/g //a或b或g
    alert(str.match(re)) //apc gpc 

表示范围

    var str = 'abc 57 defjh78 djj98 kks--098'
    var re = /[0-9]+/g //[0-9]相当于\d
    alert(str.match(re))

[a-z] 代表所有的字母 [0-9] 代表数字 [^0-9] 代表排除数字 [^0-9a-z] 代表排除字母和数字

实例:过滤html标签

<body>
    <textarea id="txt1" rows="20" cols="50"></textarea>
    <input type="button" value="过滤" id="btn">
    <script>
        var oBtn = document.getElementById('btn')
        var oTxt = document.getElementById('txt1')
        oBtn.onclick = function(){
            //var re = /<.+>/g //表示<>内有若干个任意字符
            var re = /<[^<>]+>/g //表示<>内有若干个除了<>的字符
            oTxt.value = oTxt.value.replace(re, '')
        }
    </script>
</body>

转义字符

. 表示任意字符

\d 表示数字相当于[0-9];       \w 表示 英文、数字、下划线相当于[a-z0-9_] ;  \s 表示空白字符例如空格、tab等不可打印的字符

\D 表示非数字相当于[^0-9]    \W表示非英文、数字、下划线相当于[^a-z0-9_] ; \S表示非空白字符

量词-个数

{n} 表示出现n次; \d{8} 8位数字  [1-9]\d{7} 第一位不为0的8位数字

{n,m}最少n,最多m;[1-9]\d{4,10} 5-11位且第一位不为0的数字

{n,}最少n,不限;

+ 若干个相当于{1,};

? {0,1}表示可以有可以无 (0\d{2,3}-)?[1-9]\d{7}(-\d{1,3})? 固话校验

*{0,}表示可以没有

实例:邮箱格式校验

    <input type="text" id="txt">
    <input type="button" id="btn" value="校验">
    <script>
        window.onload = function()
        {
            var oTxt = document.getElementById('txt')
            var oBtn = document.getElementById('btn')
            oBtn.onclick = function(){
                var re = /^\w+@[0-9a-z]+.[a-z]+$/g //^ $ 行首行尾
                if(re.test(oTxt.value)){
                    alert('符合邮箱格式')
                }else{
                    alert('不符合邮箱格式')
                }
            }
        }
    </script>